问题:
我有这样一张桌子:
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列中的行。
尝试:
我为此使用RegEx。我写这段代码:
SELECT *
FROM `table`
WHERE `B` REGEXP "([^\d]|^)MYNUMBER[^\d]
和
RLIKE
([^ \ d] | ^)MYNUMBER [^ \ d]:
([^ \ d] | ^):不是数字,或者是第一个字符。
我的号码
[^ \ d]:不是数字
当
MYNUMBER
是25或34或任何两位数字时,我没有任何问题。但是当
MYNUMBER
是5或1或任何一位数字时,这很麻烦。结果示例1:
输入:MYNUMBER:24
结果:
A | B
-----------------------------------------
1 | 5,25,24,22,21,6,19,18,17,15,13,11
没关系。
结果示例2:
输入:MYNUMBER: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 - 从数据库表中选择RegEx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27434311/