问题:
我有一个这样的表:
A | B
-----------------------------------------
1 | 5,25,24,22,21,6,19,18,17,15,13,11
2 | 25,15,17,4,33,12,34,40,24,5,1,26,43,9
3 | 25,15,11,36,29
我需要选择 B 列中我的号码所在的行。
尝试:
我为此使用正则表达式。我写了这段代码:
SELECT *
FROM `table`
WHERE `B` REGEXP "([^\d]|^)MYNUMBER[^\d]
和RLIKE
([^\d]|^)我的号码[^\d] : ([^\d]|^) :不是数字或第一个字符。 我的号码 [^\d] :不是数字
当 MYNUMBER
为 25 或 34 或任何两位数时,我没有遇到任何问题。
但是当 MYNUMBER
是 5 或 1 或任何一位数字时,就很麻烦了。
结果示例1:
输入:我的号码:24
结果:
A | B
-----------------------------------------
1 | 5,25,24,22,21,6,19,18,17,15,13,11
没关系。
结果示例2:
输入:我的号码:5
结果:
A | B
-----------------------------------------
1 | 5,25,24,22,21,6,19,18,17,15,13,11
2 | 25,15,17,4,33,12,34,40,24,5,1,26,43,9
3 | 25,15,11,36,29
错误答案,第 3 行错误。
很奇怪:
我在 regexr.com 中尝试了我的表达,这是真的。
最佳答案
MySQL 有一个用于此目的的函数:FIND_IN_SET()
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_find-in-set
从长远来看,您可能需要考虑将其标准化为两个表......
关于mysql - 从数据库中的表中选择的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27434311/