62

文字列内のキャリッジ リターンの SQL クエリで、最終的にキャリッジ リターンを削除する

テーブルにいくつかのデータがあり、必要のない場所に改行があります。キャリッジ リターンを含むすべての文字列を取得するクエリを作成しようとしています。

私はこれを試しました

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

また

select * from Parameters
where Name LIKE '\r'

'

どちらも有効な SQL ですが、探しているものが返されません。Likeコマンドまたは別のコマンドを使用する必要がありますか? キャリッジ リターンをクエリに入れるにはどうすればよいですか?

キャリッジ リターンは必ずしも行末にあるとは限りません (途中にある場合もあります)。

4

10 に答える 10

84

これは遅くなりますが、一度だけの場合は試してみてください...

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) || '%'
于 2009-08-26T20:18:24.497 に答える
70

主な問題は、CR/LF を削除することでした。replace および char 関数を使用するとうまくいきます。

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

Postgres または Oracle SQL の場合は、代わりに CHR 関数を使用します。

       replace(replace(Name,CHR(10),''),CHR(13),'')
于 2012-09-21T13:41:57.947 に答える
12

SQL Server では、次を使用します。

WHERE CHARINDEX(CHAR(13), name) <> 0 OR CHARINDEX(CHAR(10), name) <> 0

これにより、キャリッジ リターンライン フィードの両方が検索されます。

タブも検索したい場合は、以下を追加してください:

OR CHARINDEX(CHAR(9), name) <> 0
于 2009-08-26T20:27:18.380 に答える
3

正規表現も使用できます。

SELECT * FROM Parameters WHERE Name REGEXP '\n';
于 2009-08-26T20:22:26.470 に答える
0

最初のクエリから二重引用符を省略します。

... LIKE '%\n%' 
于 2009-08-26T20:17:23.157 に答える
0

このようなものは私のために働くようです:

SELECT * FROM Parameters WHERE Name LIKE '%\n%'
于 2009-08-26T20:18:06.043 に答える