2016-08-26 20 views
0
select * 
from table 
where column LIKE '%[^0-9a-zA-Z]%' 

次の文字もwhere句に「特別」ではないと考えられることをどのように含めることができますか?SQL Serverで特別な文字を検索する

(,./;#:[]{}=-_+)(*^!`\|) 

基本的に、キリル文字/ノルディック文字やその他の面白い文字を返信したいと思います。

また の違いは何でしょう再反復するために列LIKE '%の[^ 0-9A-ZA-Z]%'

select * 
from table 
where column NOT LIKE '%[0-9a-zA-Z]%' 

テーブル から* を選択します。このようなものを見つけるにはDafoyの代わりに のようなものを見つけたいと思います。あなたのようにOR conconditionを拡張する必要が

おかげ

+0

使用するdbms製品にタグを付けます。 (それらの中には正規表現のようなものもあれば、そうでないものもあります) – jarlh

+0

投稿したことがありますか? –

+0

はい、残念ながら、それは面白いキリル文字をa-zとA-Zの範囲括弧内にあると認識します。照合とは何か? – DiamondDog

答えて

1

..

SELECT * 
FROM table 
WHERE column LIKE '%[^0-9a-zA-Z]%' 
    OR column LIKE "%#%" 
    OR column LIKE "%{%" OR (etc.) 
+0

OR演算子またはAND? – DiamondDog

+0

OR ..これらの特殊文字のいずれかに対して値を取得する必要があります。 –

+0

右。これらの特殊文字に対して値を受け取ることはしません。私は別のテキスト形式でúのようなキリル文字の値を取得したい。 – DiamondDog

0
... LIKE '[[]%' 

あなたは特殊文字(または範囲)を囲むように[ ]を使用することができます。閉じ括弧をエスケープする必要はありません。

0

あなたは、単純にこのように、必要な場合には「\」でそれらのそれぞれをエスケープしてください、あなたが既に持っている同じパターンでそれらの文字を含めることができる必要があります:

select * 
from table 
where column LIKE '%[^0-9a-zA-Z\,\.\/\;\#\:\[\]\{\}\=\-\_\+\)\(\*\^\!\`\\\|]%' 

EDIT:

良くユニコード(すなわちnvarcharデータ型)に対応するには、いくつかのオプションがありますHEREを議論し、(デフォルトの照合がASCIIまたは類似であるIIF)よりエレガントなの一つは、このように条件を使用するように思わ:

select * 
from table 
where column <> cast(column as varchar(500)) --length should match the base column length 
or column LIKE N'%[^0-9a-zA-Z\,\.\/\;\#\:\[\]\{\}\=\-\_\+\)\(\*\^\!\`\\\|]%' 

nvarcharの値とvarcharの同等の値を比較すると、ASCII以外のすべての文字(キリル文字など)を簡単に識別し、LIKEフィルタをASCII文字のサブセットにさらに分類できます。その目的のためにはかなりうまくいくと思われます。

+0

ありがとうございます。何らかの理由で、キリル文字や面白い文字を返しません。多分それはa-zとA-Zの間にあることを認識しているので照合と関係しているでしょうか? – DiamondDog

+0

@DiamondDog非ASCII(Unicode)コンテンツの処理を改善するための答えが編集されました – SlimsGhost

関連する問題