2009-08-26 29 views
41

SQL查詢,並最終移除回車SQL查詢,並最終移除回車在字符串中的回車

我表中有一些數據,也有一些回車的地方我不想要他們。我試圖編寫一個查詢來獲取所有包含回車符的字符串。

我想這

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

而且

select * from Parameters 
where Name LIKE '\r' 

'

兩者都是有效的SQL,但沒有返回我所期待的。我是否需要使用命令或不同的命令?如何獲得回車查詢?

回車不一定在行的末尾(可能在中間)。

+0

這是爲SQL服務器? – 2009-08-26 20:23:28

回答

53

這將是緩慢的,但如果它是一次性的事情,嘗試...

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

注意ANSI SQL字符串連接運算符爲「||」,因此它可能需要爲:

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

Postgresql使用函數名稱'chr'而不是'char'。 – 2014-11-20 05:41:57

+0

非常感謝! – PeteFoulkes 2015-01-22 10:06:00

+0

我從來沒有見過'||'用於SQL字符串而不是'OR'。這是一個問題嗎? – mmcrae 2015-07-02 15:53:48

0

從您的第一個查詢中省略雙引號。

... LIKE '%\n%' 
0

像這樣的事情似乎爲我工作:

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

您還可以使用正則表達式:

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

在SQL Server中我會用

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

的主要問題是,除去CR/LF。使用替代和焦功能,爲我工作:

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

專門用於Postgres或Oracle SQL,使用CHR函數:

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

這也適用

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

這是Oracle語法? – HLGEM 2015-01-08 19:54:27

1

這個工程: 從列表中選擇*其中列'%(hit enter)%'

忽略括號和命中輸入引入新的行。