これを確認してください。これは、両方の文字列を持つ行のみを選択しています。
元の正規表現が機能しなかった理由:
Because MySQL uses the C escape syntax in strings (for example, “\n” to represent the newline character), you must double any “\” that you use in your REGEXP strings.
クエリ:
SELECT * FROM vendor
WHERE (vname REGEXP '~20\\|2~'
AND vname REGEXP '~14\\|1~')
;
クエリ: あなたのものとは異なるテーブル/サンプル データを使用していることに注意してください。ただし、データ行をコピーし、少し変更して正しいregex
.
サンプルデータ:
| VID | VNAME |
------------------------------------------------------------
| 1 | ~20|2~14|1~15|1~16|1~1|1397|1|0:0:0:0||~17|1~18|1~ |
| 2 | ~20|2~14|1397|1|0:0:0:0||~17|1~18|1~ |
| 3 | ~20|2~14|1~15|1~16|1~1|1397|1|0:0:0:0||~17|1~18|1~ |
| 4 | ~20|2~1|1~16|1~1|1397|1|0:0:0:0||~17|1~18|1~ |
クエリ:
SELECT * FROM vendor
WHERE (vname REGEXP '~20\[|]2~'
AND vname REGEXP '~14\[|]1~')
;
結果:
| VID | VNAME |
------------------------------------------------------------
| 1 | ~20|2~14|1~15|1~16|1~1|1397|1|0:0:0:0||~17|1~18|1~ |
| 3 | ~20|2~14|1~15|1~16|1~1|1397|1|0:0:0:0||~17|1~18|1~ |