仅选择MySQL中仅包含字母数字字符的行

cod*_*gar 44 regex mysql

我正在尝试使用以下方法选择MySQL中仅包含字母数字字符的所有行:

SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';
Run Code Online (Sandbox Code Playgroud)

但是,它返回所有行,而不管它们是否包含非字母数字字符.

Aar*_*lla 79

试试这段代码:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
Run Code Online (Sandbox Code Playgroud)

这可以确保所有字符都匹配.

  • @ Md.MahabuburRahman:`9`和`]`之间的空白:`'^ [A-Za-z0-9] + $'` (3认同)

Joh*_*ica 8

您的语句匹配任何包含字母或数字的字符串,即使它包含其他非字母数字字符.试试这个:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
Run Code Online (Sandbox Code Playgroud)

^$要求整个字符串匹配而不是仅仅匹配它的任何部分,并+查找1个或多个字母数字字符.

如果您愿意,也可以使用命名的字符类:

SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
Run Code Online (Sandbox Code Playgroud)