2016-10-26 1 views
1

フィールドに「BLANK」エントリを保持し続けるMSSQLテーブルがあります。プログラムで起こったのか、ユーザーエントリによるものなのか分かりません。それは少し 'ブロック'として表示されますが、そうでなければフィールドは空白に見えます。コピーしてメモ帳++に貼り付けて行の文字を表示すると、空白とCRLF(時には複数の文字)が表示されます。私はこのフィールドにはすべてそれを持っていることを正確に知りたい。メモ帳に表示されないCRLFの後に別の値があるようです。フィールドを検索するとMSSQLフィールドのすべての文字を印刷するには - CR LFの問題

WHERE (e_text LIKE '% ' + CHAR(13) + '' + CHAR(10) + '%') 

私は結果が得られます。私が検索した場合

WHERE (e_text LIKE ' ' + CHAR(13) + '' + CHAR(10) + '%') 

私は結果が得られます。

しかし、私が使用して検索する場合:私は結果を得ることはありません

WHERE (e_text LIKE '% ' + CHAR(13) + '' + CHAR(10) + '') 

。したがって、最後にワイルドカードを使用しないと、SQLは別の値があると言います。

SQL DISPLAY and NOTEPAD++

+0

あなたが提供する最後の述語、 '(e_text LIKE '%' + CHAR(13)+ '' + CHAR(10)+ '' ) 'は、CRLFの前にスペースがある文字列を探しています。 'WHERE(e_text LIKE CHAR(13)+ '' + CHAR(10)+ '')'を使うとどうなりますか? – Aron

+0

アロン、申し訳ありません - それも含めて - それは何も見つかりません。明らかに、私のコピー/ペーストにメモ帳++に表示されない末尾の値があります。私はちょうど実行しました:https://msdn.microsoft.com/en-us/library/ms187323.aspx(ASCIIとCHARを使用して文字列からASCII値を出力する) 結果は次のとおりです:32,13,10,10、 32,32,32,32 したがって、メモ帳にはCRとこのSQLプリントアウトの4つの末尾空白がありません。 – user3224972

+0

しかし、私が検索した場合: どこでも(e_text LIKE CHAR(13)+ 'CHAR(10)+' '+ CHAR(10)+') 私はまだ何も得られません。私は1つのスペースと%で終わってみました、また、ダイスはありません。 – user3224972

答えて

1

根本的な原因は、あなたがそれらをデータベースに挿入する前に値をトリミングしていないということです。以下の例は、どの列にデータがあるかを識別するのに役立ちます。私は、次のことをやっている:

  1. はスペース
  2. で改行を置き換える右
  3. に残っ
  4. トリムeccessスペース上の余分なスペースをトリミングすることと等しい空の文字列をしていますか?もしそうなら、ここには何もありません。

サンプルコード:

DECLARE @tbl TABLE (field1 varchar(100));  
INSERT INTO @tbl 
VALUES 
('I am not null'), 
(' '), 
(' 

'), 
('not null with new line 

'), 
('not null with trailing spaces  '); 


SELECT *, CASE 
WHEN LTRIM(RTRIM(REPLACE(REPLACE(field1, CHAR(13), ''), CHAR(10), ''))) = '' THEN 'column can be trimmed to nothing' ELSE 'column has something' end 
FROM @tbl 

enter image description here

+2

SSMSにUTF文字を含む空白が表示されるケースがいくつかあります。だから、長さのチェックは、これらのエッジケース(トリムが失敗する)に役立ちます – pkExec

+0

私はこのプログラムを修正するためにあなたの努力を感謝します - 私はちょうど通過し、このものをきれいにしようとしている(開発者はトリミングを扱う)。私はちょうどそのセルでEXACTLY SQLが持つものを見つける方法を知りたいだけです。 – user3224972

+0

あなたが持っているものを正確に知りたければ、SSMS以外のツールでデータを選択してください。または、ファイルを選択します。私はあなたが本当に何かにトリミングすることができる何も気にしないが、私はデータベースのデータを更新するために書いたようなものを使用することができると思っています。 – jhilden

関連する問題