2011-12-14 16 views
1

正規表現を使用してSQL文中の空白を見つけることができるかどうか、またどのようにすればいいのでしょうか。SQLの正規表現

私は実際の文字列の後に空白を無制限に持つことができる文字列を持っています。例えば

 

"STRING " 
"STRING " 
 

は一致しますが、

 

"STRING A" 
"STRINGB" 

はないでしょう。

は、今私が持っている:かなり私が望む結果を返すdoesntの

like 'STRING%' 

。私は最後にスペースを任意の文字列を見つけることができるような単純なSQL Serverのに2008

答えて

4

を使用しています

:また、タブ、改行やラインを許可するに

where col1 like '% ' 

フィード:

where col1 like '%[ ' + char(9) + char(10) + char(13) + ']' 

「文字列」の後に任意の空白文字を見つけるには、あなたのコメントごとに:

where rtrim(col1) = 'string' 
+0

私は、任意の数を必要に応じて空白文字の前に文字がある場合、これは機能しますか? where col1 like 'STRING%' – user489041

+0

これは、文字列STRINGで始まり、それから何かが始まり、スペースで終わる文字列を見つけるでしょう。 – Andomar

+0

あなたの言っていることが分かります。ご回答いただきありがとうございます。最初の例を修正して、探している特定の文字列を許可してから、空白をいくつでも入力することができます – user489041

0

あなたはあなたのための文字列を検索します

where len(col1) <> len(rtrim(col1)) 
+0

動作しません。後ろのスペースは 'LEN'によって無視されます –

+0

私の心を滑っていた... ...len(col1)<> len(col1 +": ")これはアプローチの意図です。優れたキャッチマーティン。 –

0

Andomarの答えを試みることができるが、私のスパイダーマンの感覚は、問題の範囲は、単に空白文字を見つけるよりも大きいかもしれないと言われます。

私は疑うよう、あなたがそれをクリーンアップすることができるように、あなたは空白を見つけている、場合は、簡単な

UPDATE Table1 
SET col1 = RTRIM(col1) 

は、列から末尾の空白を削除します。

またはRTRIM(LTRIM(col1))を使用して、先頭と末尾の両方の空白を削除します。

または置換する文字列に空白を含むすべてを削除するには、置換(col1、 ''。 '')。

RTRIMとLTRIMはスペースでのみ機能するので、REPLACEを使用する必要があるタブ/ CR/LFを削除することに注意してください。文字列の先頭/末尾部分からのみそれらを削除することは実現可能ですが、完全に単純ではありません。 DBベンダーにANSI SQL 99標準のTRIM機能を実装してください。

0
where len(col1 + 'x') <> len(rtrim(col1)) + 1