MySQL REGEXP匹配逗号分隔列表中的零
我有一个由逗号分隔的整数列表组成的表列 我正在尝试构建一个用于报告目的的查询,该查询标识包含以下内容的行数:MySQL REGEXP匹配逗号分隔列表中的零,mysql,regex,Mysql,Regex,我有一个由逗号分隔的整数列表组成的表列 我正在尝试构建一个用于报告目的的查询,该查询标识包含以下内容的行数: 列表有前导零 列出conatains零 列表都是零 以下是我到目前为止的情况(我只能算出前导零): 我正在寻找正则表达式,以适应第二和第三种情况 注意:此列仅包含整数,不包含小数/浮点数 列表包含零 由于您要查找完整的单词匹配,请使用 REGEXP '[[:<:]]0+[[:>:]]' +表示出现一次或多次 请参见说明: ^-字符串的开头 0+-1或更多0s (,0+
- 列表有前导零
- 列出conatains零
- 列表都是零
REGEXP '[[:<:]]0+[[:>:]]'
+
表示出现一次或多次
请参见说明:
-字符串的开头^
-1或更多0+
s0
-零个或多个序列:(,0+)*
-逗号,
-一个或多个0+
s0
-字符串结尾$
,0+,| ^0+,|,0+$
- 开始、中间和结束时的3个零备选方案
^(0,?)+$
和^
是锚定$
表示后面可能跟逗号的多个零(0,?)+
在类似于
12134102
的列表中,这不会给出假阳性吗?它与102
中的零匹配?啊哈,你是说一个完整的单词匹配?使用REGEXP'[[::]]'
?我认为类似的东西会匹配0
,00
,000
,等等。全零解决方案有意义,您介意解释包含零解决方案中的语法吗?我已经添加了所有解释和演示。我选择了其他答案,因为更全面的解释/演示以及案例2中更清晰的解决方案。但是,我使用您的解决方案处理案例3。非常感谢。比较为匹配输入所需的步骤数-12-和-83。正则表达式在线性匹配时更好。较短的模式不必更有效。不明确。“1233004555”是否包含零?“012”是包含前导零,还是仅包含“0,0123”?当询问“零”时,您是指“数字”(如0
,但不是01
或101
或110
)吗?还是“数字”(所有数字都包含“零”)?
REGEXP '[[:<:]]0+[[:>:]]'
REGEXP '^0+(,0+)*$'