Avatar billede annsofie85 Nybegynder
15. februar 2012 - 08:46 Der er 12 kommentarer og
1 løsning

Udskifte del af kolonne (sql)

Hej.

Hvordan opdaterer jeg dele af en kolonne i en tabel.

Hvis jeg f.eks. har en kolonne som indeholder følgende tekst:

CPR="xxxxxx-xxxx" FirstName="xxxx" LastName="xxxx"

og jeg gerne vil udskifte x'erne hvordan gør jeg så det uden at overskrive hele kolonnen?

På forhånd tak
Avatar billede NCG Novice
15. februar 2012 - 09:01 #1
15. februar 2012 - 09:08 #2
Jeg er forvirret.  Hvis man har en database tabel over personer der ser således ud:

CPR          FIRSTNAME LASTNAME
1234567890 Hans    Jensen
2345678901 Jens    Hansen

så bruges betegnelsen kolonne om de lodrette inddelinger.  Første kolonne består af dette:

CPR
1234567890
2345678901

og den første række, bortset fra overskriften, er

1234567890 Hans    Jensen


Skal jeg forstå dit spørgsmål således, at du i en række, i felterne CPR, FirstName, og LastName, har værdierne xxxxxx-xxx, xxxx, og xxxx, og der vil du i stedet have til at stå, for eksempel, 1234567890, Hans, Jensen?

Det kan du gøre således (hvis tabellen hedder Personer)

UPDATE Personer SET CPR = '1234567890', FIRSTNAME = 'Hans', LASTNAME = 'Jensen' WHERE CPR = 'xxxxxx-xxx'
Avatar billede annsofie85 Nybegynder
15. februar 2012 - 09:36 #3
Min database ser lidt anderledes ud så de er samlet i en enkelt kolonne. Derfor er det lidt besværligt.

              PatientData
CPR="xxxxxx-xxxx" FirstName="xxxx" LastName="xxxx"

Og jeg kan ikke ændre på databasedesignet.
Avatar billede annsofie85 Nybegynder
15. februar 2012 - 10:18 #4
Ja og jeg mener selvfølgelig at de er samlet i et felt. Min fejl
15. februar 2012 - 15:07 #5
Den kan jeg nok ikke hjælpe dig med.  Beklager.
Avatar billede ramad Praktikant
15. februar 2012 - 16:44 #6
Noget ala?

-- Update for Cpr, det skulle være muligt at tilføje tilsvarende replace for fornavn og efternavn.
UPDATE _TabelNavn_
SET PatientData = REPLACE(PatientData, 'CPR="xxxxxx-xxxx"', 'CPR="123456-1111"')
WHERE _Begtingelse_

(er ikke testet og er bare "from the top of the head")
Avatar billede Syska Mester
15. februar 2012 - 21:51 #7
Nok ikke så hjælpsom, men hvis det er standarden for hele systemet så ville jeg løbe væk i en fart uden at se mig tilbage.

Hvis det så ikke er muligt, vil jeg begynde at græde.

( Jeg føler med dig hvis du skal vedligeholde overstående )
Avatar billede ramad Praktikant
15. februar 2012 - 22:23 #8
#7 enig :)
Avatar billede NCG Novice
16. februar 2012 - 08:30 #9
Helt enig #7

*Facepalm* ... det er lige til at græde over!
Avatar billede annsofie85 Nybegynder
16. februar 2012 - 09:00 #10
Haha!
Ja det er ikke nemt.
Jeg tror jeg forsøger at bruge noget ala

UPDATE _Tabelnavn_
SET PatientData = SUBSTR(PatientData ,1,29) CONCAT '123456-1111' CONCAT SUBSTR(DATA,41,45)
WHERE _Betingelse_

Så skulle jeg kunne udskifte data mellem position 29 og 41.
Jeg skal bare lige kringle den for jeg kender heller ikke positionen på de oplysninger jeg vil udskifte (x'erne). :-S
Avatar billede annsofie85 Nybegynder
16. februar 2012 - 09:06 #11
Hmm okay, jeg vil vist bare gøre tingene mere besværlige end de er :-S

ramad dit forslag virkede helt perfekt så smid et svar så får du point :)
Avatar billede ramad Praktikant
16. februar 2012 - 10:06 #12
Behold dem bare - det lader til, at du får brug for dem senere :)
Avatar billede annsofie85 Nybegynder
16. februar 2012 - 10:26 #13
Jamen så siger jeg mange tak :)
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