REGEX式はMySQLのクエリの組み合わせ

ボブ・スタウト:

私は、フィールド内の不適切に入力したデータを探すことにクエリを持っています。フィールドには、5〜8桁の間含む文字列が含まれている必要があります。

私が今持っているクエリは次のとおりです。

"...WHERE NOT(sid REGEXP '[0-9]{5}') AND NOT(sid REGEXP '[0-9]{6}') 
AND NOT(sid REGEXP '[0-9]{7}') AND NOT (sid REGEXP '[0-9]{8}')".

これを行うにはよりエレガント/短い方法はありますか?

beltouche:
WHERE NOT(sid REGEXP '[0-9]{5,8}')

NB:としてベルントBuffenは、ので、これはまだ8桁以上の何かをできるようになります、注意例えば、9桁の文字列は、8桁の文字列が含まれています。あなたは、文字列の境界を定義する情報のいくつかの種類を追加する必要があります。文字列が数字のみで構成されている場合たとえば、あなたがしたいです

WHERE NOT(sid REGEXP '^[0-9]{5,8}$')

それは、より大きな文字列内の「言葉」だ場合、あなたのようなものを使用することができます

WHERE NOT(sid REGEXP '\W[0-9]{5,8}\W')

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=15019&siteId=1