2016-08-13 29 views
0

私はターゲット文字列が含まれているレコードを検索するために括弧をエスケープすることができますどのように2014年どのようにして大括弧をSQLでLIKE式で見つけることができますか?

SQL Serverでlike式で[email protected]#$%^&[]{}<>?/,.*(^のような記号[]が含まれているシーケンスで見つける必要がありますか?

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^&[]{}<>?/,.*(^"%'; 

[TARGET TABLE]

some text "[email protected]#$^&[]{}<>?/,.*(^" 

であるが、式の結果が空の値[TARGET COLUMN]と行を有します。

私は[]がワイルドカードであることを知っていますが、エスケープブラケットを使って文字列を見つける方法がわかりません。私はこの

Create Table #Rohit (VarcharValues varchar(255)) 
Insert into #Rohit values 
('"[email protected]#$^&[]{}<>?/,.*(^"') 

を使用していた

+0

私は、SQLサーバーの正確な詳細を知りませんしかし、 ''%\ [\]%''はその仕事をします(これはOracleとMySQLのケースになります)。 – FDavidov

答えて

0

そして、この

SELECT * FROM [#Rohit] WHERE VarcharValues LIKE '%"[email protected]#$^&\[]%' Escape '\' 
2

LIKEは、デフォルトでは\で、エスケープ文字を、持っています。それを別のものに設定することができます。だから、これは動作するはずです:

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^\[\]{}<>?/,.*(^"%'; 

あなたが別の文字に設定することができますが、1つの所与のあなたの文字を選択することは困難である:あなたはおそらく、

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^+[+]{}<>?/,.*(^"%' ESCAPE '+' 

しかし、あなたは、より一般的になりたい場合は文字セットに^が必要です。あなたはだけに英数字以外の文字を含む列を検索する場合

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%[^a-zA-Z0-9]%'; 

または、:たとえば任意の非alphnumeric文字を含む列を取得する

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] NOT LIKE '%[a-zA-Z0-9]%'; 

このアイデアすることができますが、もちろん、他の文字セットにも拡張できます。

1

クラスの中に左の括弧を[[]として置くことができます。閉じ括弧がクラスを閉じていないときは、リテラルとして扱われます。 (私はを設定すると、SQL Serverのマニュアルだけでこれに言及だと思うの正規表現から用語として単語クラスを使用しています。)

LIKE '%"[email protected]#$^&[[]]{}<>?/,.*(^"%'; 
関連する問題