Avatar billede jytte Nybegynder
17. november 2009 - 09:01 Der er 9 kommentarer og
2 løsninger

fjerne linjeskift i databasefelt

Jeg har et databasefelt hvor der i nogle linjer har sneget sig et linjeskift ind.

Dette linjeskift generer når feltets indhold bliver sat ind i genereret javascript-kode.

Så mit spørgsmål er nu om jeg vha. sql kan finde de databasefelter hvor de generende linjeskift er?
Avatar billede terry Ekspert
17. november 2009 - 09:13 #1
wasnt it a better idea to alter your javascript so that you dont get line breaks in your database?
Avatar billede terry Ekspert
17. november 2009 - 09:14 #2
you can use (i think) the replace() method to do this
Avatar billede terry Ekspert
17. november 2009 - 09:15 #3
also in sql
Avatar billede Syska Mester
17. november 2009 - 09:33 #4
declare @Text varchar(50) = 'Dette er en tekst';

SET @Text = REPLACE(@Text, 'er', 'var');

print @Text

dvs.
UPDATE t1 SET felt1 = REPLACE(fel1, 'gammelvaerdi', 'nyvaerdi') WHERE felt1 LIKE '%somevalue%

Du kan lege lidt med det, men burde give en ide til hvordan du kan gøre det ...

Men prøv med en select først, så den ikke tager for mange columns med ... der er ingen undo i SQL :-)
Avatar billede jytte Nybegynder
17. november 2009 - 11:26 #5
terry> korrekt, men i et kørende system må jeg ikke lægge ny kode op hver dag, men jeg må godt ændre i enkelte databasefelter hele tiden.

Mit egentlig problem er hvordan jeg overhovedet finder et linieskift i et databasefelt vha. SQL.
Hvad er koden for liniskift i SQL?
Hvis jeg selecter på et felt hvor jeg ved der er et linieskift kan jeg ikke se dette linieskift, men jeg vil gerne finde alle de linjeskift der er i disse felter og fjerne dem.
Det virker som om min SQL-select giver resultat som om linjeskift ignoreres.
Avatar billede Syska Mester
17. november 2009 - 12:03 #7
SELECT * FROM table1 WHERE col LIKE '%\n%'

eller måske
\r som er caridge return
\n som er newline feed
Avatar billede jytte Nybegynder
17. november 2009 - 14:58 #8
Ok jeg kan se at konklusionen bliver at

update tabel set felt = replace(felt,char(13)+char(10),'')

fjerner linjeskift.

og hvis jeg først vil finde felterne der slutter med linjeskift skal jeg skrive

SELECT felt FROM tabel WHERE felt LIKE '%' + CHAR(13) + CHAR(10)

Tak for hjælpen (husk at lægge et svar)
Avatar billede terry Ekspert
17. november 2009 - 15:17 #9
svar
Avatar billede Syska Mester
17. november 2009 - 15:46 #10
svar
Avatar billede terry Ekspert
23. november 2009 - 10:05 #11
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