2009-08-26 14 views
41
zapytanie

SQL dla powrotu karetki w ciąg znaków i ostatecznie usuwanie powrót karetkizapytań SQL do powrotu karetki w ciąg znaków i ostatecznie usuwanie powrót karetki

mam pewne dane w tabeli i są pewne powrotu karetki w miejscach gdzie ich nie chcę. Próbuję napisać zapytanie, aby uzyskać wszystkie ciągi zawierające deklaracje karetki.

Próbowałem to

select * from Parameters 
where Name LIKE '%"\n" %' 

także

select * from Parameters 
where Name LIKE '\r' 

'

Oba są ważne SQL, ale nie wracają co szukam. Czy muszę używać polecenia Like lub innego polecenia? Jak uzyskać powrót karetki do zapytania?

Powrót karetki niekoniecznie musi znajdować się na końcu linii (może znajdować się pośrodku).

+0

było to dla serwera sql? –

Odpowiedz

53

ten będzie powolny, ale jeśli jest to sprawa jednorazowa, spróbuj ...

select * from parameters where name like '%'+char(13)+'%' or name like '%'+char(10)+'%' 

Należy pamiętać, że Operator konkatenacji ciągów znaków ANSI to "||", więc może być konieczne:

select * from parameters where name like '%' || char(13) || '%' or name like '%' || char(10) || '%' 
+2

Postgresql używa nazwy funkcji 'chr' zamiast' char'. –

+0

Dziękuję bardzo! – PeteFoulkes

+0

Nigdy nie widziałem '||' użytego w łańcuchu SQL zamiast 'OR'. Kiedy to dotyczy? – mmcrae

0

Pomiń podwójne cudzysłowy z pierwszego zapytania.

... LIKE '%\n%' 
0

Coś jak to wydaje się działać dla mnie:

SELECT * FROM Parameters WHERE Name LIKE '%\n%' 
3

Można również użyć wyrażeń regularnych:

SELECT * FROM Parameters WHERE Name REGEXP '\n'; 
5

W SQL Server użyłbym

where charindex(char(13), name)<>0 
49

Głównym pytaniem było usunięcie CR/LF. Korzystanie Replace i char funkcji działa na mnie:

Select replace(replace(Name,char(10),''),char(13),'') 

Dla PostgreSQL lub Oracle SQL, należy użyć funkcji CHR zamiast:

 replace(replace(Name,CHR(10),''),CHR(13),'') 
0

Działa to również

SELECT TRANSLATE(STRING_WITH_NL_CR, CHAR(10) || CHAR(13), ' ') FROM DUAL; 
+1

To jest składnia Oracle? – HLGEM

1

to działa: wybierz * z tabeli, w której kolumna "% (wciśnij enter)%"

Zignoruj nawiasy i naciśnij enter, aby wprowadzić nową linię.