2013-04-16 11 views
5

私は列がリストから要素を含むテーブルからすべての行を選択しようとしているから要素を含んでいますのMySQL:選択行の列がリスト

Select * from `table` where `column` (contains anything from {£,$,%,^,&,...,/}) 

このような ものは基本的に不正な文字のチェックです。

誰でも手助けできますか?

おかげ

答えて

9

LIKEを使用することができます。あなたのケースでは、次の例では、うまくいくかもしれない:

SELECT * FROM `table` WHERE `column` REGEXP '[\£\$\%\^\&]'; 
+0

ありがとうございます。*のエスケープシーケンスを知っていますか?私もこれを違法な人物として欲しいと思って、何かを見つけようと苦労している。 –

+1

すべてをバックスラッシュでエスケープする。結果: '[\\ \ \ \%\^\&\ * \?] '。 – BlitZ

+0

@CORRUPT +1は、簡単で簡単な&良い答えです。 –

0

あなたは、パターンマッチングのための特定の列をチェックするREGEXPまたはRLIKEを使用することができ、パターンマッチングのためのMySQLの場合

SELECT * 
FROM `table` 
WHERE `column` LIKE '%£%' OR 
     `column` LIKE '%$%' OR 
     `column` LIKE '%\%%' OR 
     `column` LIKE '%&%' 
0

を、私はあなたが英数字以外の文字を持っているすべての行が数字とアルファベット

SELECT * FROM `table` WHERE `column` REGEXP '^[^a-zA-Z0-9]+$' 

以外、つまり^[ ]内部charcterクラスは否定を意味しますこれを正しく理解している場合正規表現の先頭には列の値の開始が指定されています。 $文字列値の最後の文字列

0
SELECT * FROM table WHERE column LIKE '%\%%' OR column LIKE '%$%' OR column LIKE '%&%'; 

...など。 '%char%'はどこかにcharがあることを意味し、 '%char'はcharが文字列の最後にあることを意味し、 'char%'は先頭にあることを意味します。 '%\ %%'は、検索されたchar(%)がmysqlが使用する特殊文字であり、 '\'が必要であることを意味します。