问题:

我有这样一张桌子:

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/

10-13 08:58