请检查一下,这只是选择包含两个字符串的行。
您原来的正则表达式不起作用的原因是:
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~ |