我需要一个MySQL正则表达式来计算用户用户名中的位数。
即。如果需要选择7个以上的数字。
我尝试了以下表达式,但它给了我错误
SELECT * FROM `user` WHERE `name` REGEXP '^\D*(?:\d\D*){7,}$'
我得到的错误是
#1139 - 来自正则表达式的错误'重复 - 运算符操作数无效'
答案 0 :(得分:1)
您使用的是\d
和\D
以及(?:)
语法,但MySQL不支持这些扩展的正则表达式元字符。
如果它有超过7个数字,则需要选择它。
所以我猜你可以假设用户名是有效的,即你不需要检查它是否以非数字开头。并且您可以接受具有超过7位数字以及至少7位数的用户名。我也假设数字不需要在一起,只需要有7个。
这是一个有效的正则表达式:
SELECT * FROM `user` WHERE `name` REGEXP '([[:digit:]].*){7}';