
MySqlでREGEXP
を使うときの特殊文字のエスケープの仕方の質問です。
仮に以下のようなファイルがあって、これをgrep
したら、バックスラッシュで特殊文字のエスケープが出来ます。
txt
1~$ cat regex.txt 2 3 This line ends with a dot. 4 [text] kaku kakko 5 {text} nami kakko 6 my ip is 192.168.1.99 7 slash / backslash \
grep
1 ~$ cat regex.txt | grep '\.' 2This line ends with a dot. 3my ip is 192.168.1.99 4 5~$ cat regex.txt | grep -e '\[' 6[text] kaku kakko 7 8~$ cat regex.txt | grep -e '\{' 9{text} nami kakko 10 11~$ cat regex.txt | grep -e '\\' 12slash / backslash \
同様のことをMYSQLでやりたいのですが、エラーになります。テーブル・データはすであるものとします。その既存のテーブルデータはこの通り。
mysql
1mysql> SELECT * from mytable; 2+-----+-----------------------------------------+ 3| 1 | This line ends with a dot. | 4| 2 | [text] kaku kakko | 5| 3 | {text} nami kakko | 6| 4 | my ip is 192.168.1.99 | 7| 5 | slash / backslash \ | 8+---+-------------------------------------------+
さて、上のテーブルを使って、以下のエラーが出るので、どう修正すればよいのかを教えてください。
mysql > SELECT * from mytable WHERE REGEXP '\.' ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MYSQL server version for the right syntax to use near 'regexp '\.' mysql > SELECT * from mytable WHERE REGEXP '\[' ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MYSQL server version for the right syntax to use near 'regexp '\['
REGEXPで特殊文字をエスケープする方法を教えてください。もしかすると、エスケープ以外、他に何か問題があるのでしょうか?
追記:
回答をよんでみて、質問が明確ではないと感じたので追記いたします。
テーブルはすでに作られていて、テキストもすでにインサートされているものとします。テーブルの作り方、インサートの仕方の質問ではありません。 REGEXPのエラーに関する質問です。




回答1件
あなたの回答
tips
プレビュー