2016-06-27 25 views
0

空白以外のほとんどのリテラルで英数字以外の文字を含むすべての行を抽出しようとしています。フィールドに英数字以外の文字が含まれている行を返します

Return sql rows where field contains ONLY non-alphanumeric charactersここに記載されているように、私はアドバイスを適応しようとしましたが、not LIKE '%[a-z0-9]%'は行をスペースで返します。ファイン。私はnot LIKE '%[a-z0-9 ]%'の正規表現を修正し、今私はゼロ行が返されている。私は間違って何をしていますか?

+0

使用するdbmsにタグを付けます。 (その 'LIKE'版は製品固有のものです...) – jarlh

+0

あなたの質問には、使用しているデータベースにタグを付けてください。 –

+0

お詫び申し上げます、私たちはSQL Server 2005を使用していることを反映して編集しました – GavinP

答えて

4

SQL Serverの質問です。あなたは、SQL Serverで欲しいものを行うには、どうなる:

where col like '%[^a-zA-Z0-9]%' 

ようなパターンで^がない、リスト内の任意の文字に一致します。

+0

ああ、OK。答えをありがとう。したがって、許可するスペースを含めるには '%[^ a-zA-Z0-9]% ''を実行できます。特定の句読点を許可するようにルールを変更する必要がある場合は、その文字を最後に追加するだけです。 – GavinP

+0

@GavinP 'REGEX'はT-SQLで制限されていますので、https://msdn.microsoft.com/en-us/library/ms179859.aspxをチェックし、https://technet.microsoft.com/en- us/library/ms187489(v = sql.105).aspxを参照して制限事項を確認してください。 – scsimon

+0

@ GavinP。 。 。角かっこの間にスペースやその他の文字を追加することができます。角カッコ自体を追加する場合は注意してください。 –

関連する問題