SQLを使用していて、正規表現を使用して文字列に特定の部分文字列が含まれているかどうかを確認する必要があります。大文字と小文字は許可されています。文字列に特定の部分文字列が含まれているかどうかを確認するSQL正規表現
現在、私は説明= '/^[-ZA-Z \ s]はmysubstring [-ZA-Z \ s]は $ /'
を持っている。しかし、それはいくつかのために働いていません理由。何か案が?
SQLを使用していて、正規表現を使用して文字列に特定の部分文字列が含まれているかどうかを確認する必要があります。大文字と小文字は許可されています。文字列に特定の部分文字列が含まれているかどうかを確認するSQL正規表現
現在、私は説明= '/^[-ZA-Z \ s]はmysubstring [-ZA-Z \ s]は $ /'
を持っている。しかし、それはいくつかのために働いていません理由。何か案が?
MySQL正規表現は、PHP PCRE正規表現と同じ構文をサポートしていません。正規表現チェックを使用する場合は、REGEXP
operatorを使用する必要があります。次に、\s
と他の省略形クラスをサポートしていないので、[:space:]
POSIX文字クラスに置き換える必要があります。
また、MySQL REGEXP
はデフォルトで大文字と小文字を区別しない正規表現チェックを実行しますが、非標準オプションがある場合に備えてを使用することもできます。
使用
WHERE description REGEXP '^[a-zA-Z[:space:]]*mysubstring[a-zA-Z[:space:]]*$'
あなたは、そこにエントリの中で、あなたは自分の文字列を含むものを見つけるために必要なものを気に%
(=任意のテキスト)のワイルドカードでLIKE
を使用しない場合:
WHERE description LIKE '%mysubstring%'
どのRDMSを使用していますか? – trincot
パターンを正しく使用していないようです。これは 'WHERE description REGEXP '^ [[:alpha:] [:space:]]のようになります。* mysubstring [[:alpha:] [:space:]] * $'' –
あなたは単にLIKE文を使って部分文字列 – sumit