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/

相关文章:

php - 内部联接

mysql - 将表的一部分从 SQL Server 复制到 Aurora DB(基于 AWS 的 MySQL)

Javascript正则表达式只留下单词(国际版)

php - LEFT JOIN 只返回右表中的一行

php mysql - 获取产品的产品缩略图

sql - 这个SQL语句有什么问题

php - Perl 正则表达式 X 修饰符的倒数

python - 如何编写正则表达式以特定字符串开头和结尾?

asp.net - 正则表达式解析 csv

javascript - 使用正则表达式匹配多个 url 路径,包括正斜杠