查找MySql列中逗号分隔的字符串中是否存在大于数字的值

时间:2019-02-11 10:34:44

标签: mysql sql

我有一张表,下面给出了值

payment_pattern application
0,0,117,9,5  XXXX0004DqjBQAS
0,30,0,29,16,0   XXX000004E79tQAC
30,30,23,29,22,1 XXX000006F2brQAC
0,0,0,0,29,28    XXXB000006Fs3oQAC 

需要找到正则表达式,该表达式将返回所有值大于或等于30的行。

示例输出应为

0,0,117,9,5 XXXX0004DqjBQAS
0,30,0,29,16,0  XXXX0004E79tQAC
30,30,23,29,22,1 XXXX0006F2brQAC 

1 个答案:

答案 0 :(得分:0)

可以在此处使用REGEXP

SELECT payment_pattern, application
FROM yourTable
WHERE payment_pattern REGEXP '[[:<:]]([3-9][0-9]|[1-9][0-9][0-9][0-9]*)[[:>:]]';

但是,最好不要在表中存储未标准化的CSV数据。如果每个数字都存储在单独的记录中,那么您的查询将很简单。

以下是上述正则表达式的演示:

Demo

以下是上述正则表达式的简要说明:

(
[3-9][0-9]             match 30 to 99
[1-9][0-9][0-9][0-9]*  match 100 to 999, or this plus any other digit
)