仅选择MySQL中仅包含字母数字字符的行
我正在尝试使用以下方法选择MySQL中仅包含字母数字字符的所有行:仅选择MySQL中仅包含字母数字字符的行,mysql,regex,Mysql,Regex,我正在尝试使用以下方法选择MySQL中仅包含字母数字字符的所有行: SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]'; 但是,它将返回所有行,而不管它们是否包含非字母数字字符。请尝试以下代码: SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$' 这将确保所有字符都匹配。请尝试以下操作: REGEXP '^[a-z0-9]+$' SELECT * FROM table WH
SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';
但是,它将返回所有行,而不管它们是否包含非字母数字字符。请尝试以下代码:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
这将确保所有字符都匹配。请尝试以下操作:
REGEXP '^[a-z0-9]+$'
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
因为除了二进制字段外,regexp不区分大小写。您的语句匹配任何包含字母或数字的字符串,即使它包含其他非字母数字字符。试试这个:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
^
和$
需要匹配整个字符串,而不仅仅是其中的任何部分,并且+
查找一个或多个字母数字字符
如果愿意,还可以使用命名字符类:
SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
将
REGEXP
更改为Like
SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%'
这个很好用还有一个:
select m from table where not regexp_like(m, '^[0-9]\d+$')
它从所需列中选择包含字符的行(示例中为m,但您可以更改)
大多数组合在Oracle平台中都不能正常工作,但这确实可以。共享以备将来参考。试试这个
select count(*) from table where cast(col as double) is null;
好的,它做得很好,但它不显示包括数据字段在内的空间。如何通过此查询获取包含数据字段的空间。@Md.MahabuburRahman:regexp是否有效?我记得在最后一个字符上使用isnumeric进行此操作。这很有趣。感谢从birt中选择名称,其中为数字(右(名称,1))=1@chungtinhlakho不,与
isnumeric()
相比,regexp效率非常低。如果可以,请使用专用函数。