mysql - 从数据库中的表中选择的正则表达式

标签 mysql regex

问题:

我有一个这样的表:

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/

相关文章:

java - 我需要一个根据变量匹配数字的正则表达式

php - Laravel if 选项值 ==

php - 在没有 pivot 和 group concat 的情况下在 mysql 中行到列

python - 替换可变数量的组

java - java中正则表达式中的可选元素

javascript - 如何改进我的backbone.js搜索功能?

javascript - 将正则表达式与 JavaScript 匹配

mysqldump 8 客户端使用 no-create-info 生成空的 .sql 文件

MySQL - 查找给定的同一个表中有多少重复项

mysql - 数组推送在 Promise Node.js 中不起作用