如何在MySQL中按特定模式搜索?

时间:2018-05-16 06:57:56

标签: mysql regex

我在字段中有以下数据模式

XXX-XX-XXX

有些数据没有这种模式。

因此需要搜索这些记录。

SELECT *  FROM table WHERE `name` NOT REGEXP '^.{10}$'
SELECT *  FROM table WHERE `name` NOT REGEXP '^..........$'

以上2个查询工作正常。但不是100%。

我可以按{3}-{2}-{3}过滤吗?

1 个答案:

答案 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字母数字字符