可以说我在数据库"15|26|8"
和"156|6|24"
中有这些字符串记录。我需要一个myslq RegEx语句,它可以找到我6
和 NOT 26
或15
和 NOT 156
。 Sql Regex有可能吗?
示例(常规LIKE
):SELECT * FROM db where field LIKE "%6%"
这句话使我都记录了(不是我想要的)
仅当我的号码IN
是第一个实例(即6
"6|9|24"
使用field REGEXP '6'
可获得与field LIKE "%6%"
相同的结果
Regex的新功能,因此遵循本指南https://dev.mysql.com/doc/refman/8.0/en/regexp.html有点困难。任何想法都非常感谢。
答案 0 :(得分:0)
FIND_IN_SET('6', REPLACE(col, '|', ','))
使用示例:
mysql> SELECT FIND_IN_SET('6', REPLACE("15|26|8", '|', ','));
+------------------------------------------------+
| FIND_IN_SET('6', REPLACE("15|26|8", '|', ',')) |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT FIND_IN_SET('6', REPLACE("156|6|24", '|', ','));
+-------------------------------------------------+
| FIND_IN_SET('6', REPLACE("156|6|24", '|', ',')) |
+-------------------------------------------------+
| 2 |
+-------------------------------------------------+
1 row in set (0.00 sec)
另请参阅SUBSTRING_INDEX()