13

問題に直面して、SQL Server に保存されているデータが正しく保存されていないようです。簡単に言えば、varchar データにキャリッジ リターンとライン フィードが含まれていることを確認する方法を教えてください。それらを印刷しようとしましたが、特殊文字が表示されません。ありがとう

4

3 に答える 3

19

SQL Server の関数char(n)と関数を使用して、句contains()のフィールドの内容を照合できます。WHERE

キャリッジ リターン: char(13)
改行:char(10)

次の SQL はsome_table、値にsome_field改行文字や改行文字が含まれているすべての行を検索します。

SELECT * FROM some_table 
WHERE CONTAINS(some_field, char(13)) OR CONTAINS(some_field, char(10)) 

値のキャリッジ リターンを削除するには、関数 long をandと共にsome_field使用できます。SQL は次のようになります。replace()char()contains()

UPDATE some_table 
SET some_field = REPLACE(some_field, char(13), '')
WHERE CONTAINS(some_field, char(13))

新しい行を削除するには、その更新の char(10) バージョンで最後のステートメントをフォローアップできます。どのように行うかは、テキストに含まれる改行の種類によって異なります。ただし、テキストが挿入/貼り付けされた場所によっては、改行が \r\n または \n になる可能性があるため、改行または改行の 1 つのバージョンを取得していると想定するよりも、\r と \n の両方の文字に対して更新を実行する方が安全です。もう一方。

改行が削除され、それらを保持したい場合は、エントリの時点で問題を修正する必要があることに注意してください。削除されたものを置換または修正することはできないため、元の未変更のテキストを保持する新しい列に元のテキスト データを保存する必要があります。

于 2012-04-10T15:42:11.237 に答える
4

他の人が言ったことに追加します。T-SQL に改行を埋め込む必要がある場合は、そうする傾向があります。

DECLARE @nl CHAR(2) = CHAR(13) + CHAR(10);

..必要に応じて使用@nlします。当然、これは Windows の改行用です。

于 2012-04-10T15:43:52.843 に答える
3

Char関数を見てみましょう。MSDNを参照してください。これは、特殊文字を探すのに役立ちます。

于 2012-04-10T15:40:08.603 に答える