调整正则表达式以使用MySQL

时间:2012-08-08 22:09:15

标签: mysql regex

我的这个正则表达式在我的所有测试中都运行良好,但是我无法在MySQL中使用它,尽管有一些例子我一直在谷歌搜索并试图改变它:

^[A-Za-z]{2,4}-\d{3}-\d{2}$

在Javascript中,它正确匹配AA-001-01ZZZZ-999-99,因此在MySQL中尝试了对正则表达式的各种调整,所有这些都没有运气:

SELECT * FROM products WHERE sku REGEXP '^[A-Za-z]{2,4}-\d{3}-\d{2}$'

(该表包含数千条sku与上面给出的示例匹配的记录)

尽我所知,Mysql Regex的支持是有限的,但如果这不能正常工作,还是有一些进一步的语法考虑与Mysql一起工作?

1 个答案:

答案 0 :(得分:6)

要匹配数字,您应使用[0-9][[:digit:]]

试试这个:

SELECT col1, col2, ..., coln
FROM products
WHERE sku REGEXP '^[A-Za-z]{2,4}-[0-9]{3}-[0-9]{2}$'

看到它在线工作:sqlfiddle

请参阅REGEXP手册。