我在字段中有以下数据模式
XXX-XX-XXX
有些数据没有这种模式。
因此需要搜索这些记录。
SELECT * FROM table WHERE `name` NOT REGEXP '^.{10}$'
SELECT * FROM table WHERE `name` NOT REGEXP '^..........$'
以上2个查询工作正常。但不是100%。
我可以按{3}-{2}-{3}
过滤吗?
答案 0 :(得分:2)
您希望匹配一个字符串,其中包含3个字母数字字符,后跟-
,后跟2个字母数字,然后是字符串中的连字符和3个最后一个字母数字。
使用
'^[[:alnum:]]{3}-[[:alnum:]]{2}-[[:alnum:]]{3}$'
<强>详情
^
- 字符串的开头[[:alnum:]]{3}
- 3个字母数字字符-
- 连字符[[:alnum:]]{2}-
- 2个字母数字字符和-
[[:alnum:]]{3}
- 3个字母数字字符$
- 字符串结束。请参阅MySQL "Regular Expression Syntax":
字符类名称含义
alnum
字母数字字符