Avatar billede dotnet_cowboy Nybegynder
06. september 2005 - 15:06 Der er 9 kommentarer og
1 løsning

Kopiere dele af indholdet fra et felt til en anden fra samme tbl.

Hej med jer...

Jeg skal kopiere delelementer af dataene fra et felt over i flere nye felter fra samme tabel.

F.eks.:

Nuværende felt:

"Artist":  Martin Hall

Nye felter:

"Firstname": Martin

"LastName": Hall

etc.

Kunne man smide noget tingel tangel i denne her query og knald den af i query analyzeren?

SQL:

update products
set
FirstName = Artist
LastName = Artist
from products
where ProductNo = ProductNo


Håber at høre fra jer!

Mvh

dotnet_cowboy
Avatar billede arne_v Ekspert
06. september 2005 - 16:45 #1
prøv:

UPDATE products
SET firstname = LEFT(artist, CHARINDEX(' ',artist) - 1),
    lastname = RIGHT(artist, LEN(artist) - CHARINDEX(' ',artist))

Vigtigt: test på test data først !!
Avatar billede dotnet_cowboy Nybegynder
07. september 2005 - 14:17 #2
Hej... det virker efter hensigten, men jeg har et problem.

Der er nogle af artisterne hvor der indgår et komma i navnet.

F.eks.:

Mills, Jeff

I disse tilfælde vil det være navnet efter kommaet der er fornavnet.

kan du set det problematikken? Så står efternavnet i FirstName feltet.

Har du en idé til hvordan jeg kan løse det, f.eks. ved at kører en update query igen efter jeg har kørt den første du har vist mig, for at rette dem med kommaerne?

Håber at hører fra dig.
Avatar billede arne_v Ekspert
07. september 2005 - 20:07 #3
jeg tror at du blver nødt til at lave en CASE WHEN som tester på om der er komma
eller ej, hvis ikke så som nu, hvis så lidt anderledes men stadig samme princip

evt. kunne det pakkes pænt ind i et par FUNCTION's
Avatar billede dotnet_cowboy Nybegynder
08. september 2005 - 11:17 #4
hej igen...

okay det lyder godt, men jeg er ikke hardcore nok til selv at kunne gøre det.

Vil du ikke strikke en CASE WHEN ind i dit forhenværende eksempel?

Jeg er villig til at give dig mange flere points, hvis du vil have det?!?!?!

Håber at høre fra dig

greetings
Avatar billede arne_v Ekspert
08. september 2005 - 19:44 #5
UPDATE products
SET firstname = CASE WHEN CHARINDEX(',',artist)=0 THEN LEFT(artist, CHARINDEX(' ',artist) - 1) ELSE RIGHT(artist, LEN(artist) - CHARINDEX(' ',artist)) END,
    lastname = CASE WHEN CHARINDEX(',',artist)=0 THEN RIGHT(artist, LEN(artist) - CHARINDEX(' ',artist)) ELSE LEFT(artist, CHARINDEX(',',artist) - 1) END
go
Avatar billede arne_v Ekspert
08. september 2005 - 19:45 #6
forudsætter

fornavn efternavn

eller

efternavn, fornavn
Avatar billede arne_v Ekspert
08. september 2005 - 19:45 #7
og svar
Avatar billede dotnet_cowboy Nybegynder
09. september 2005 - 13:03 #8
hold da kæft mand...

det kører som en pik mellem patter!!!!

Hvor længe har du arbejdet med T-SQL MS SQLServer?
Avatar billede dotnet_cowboy Nybegynder
09. september 2005 - 13:04 #9
og tak for hjælpen i øvrigt..

hvis du vil have flere point, så siger du bare til!

:-)
Avatar billede arne_v Ekspert
09. september 2005 - 13:07 #10
faktisk ikke så meget

men jeg har en solid generel database og SQL erfaring kombineret med
mange mange år sprogrammerings erfaring - det hjælper alt sammen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester