我正在尝试使用以下方法选择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)
这可以确保所有字符都匹配.
您的语句匹配任何包含字母或数字的字符串,即使它包含其他非字母数字字符.试试这个:
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)