You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找列中的非字母数字值?RLIKE语句失效求助

查找包含非字母数字值的列内容

你的问题出在正则表达式的写法不对,原来的([0-9][a-z]|[A-Z])*根本不是匹配所有字母数字的规则——它的意思是“数字加小写字母的组合,或者大写字母,重复任意次”,自然没法正确识别包含非字母数字的内容。

给你两种可行的SQL写法:

  • 直接匹配存在非字母数字字符的行:
SELECT * FROM your_table WHERE your_column RLIKE '[^a-zA-Z0-9]';

这里[^a-zA-Z0-9]表示“任何不是大小写字母或数字的字符”,只要列里有这样的字符就会被筛选出来。

  • 排除全由字母数字组成的行(效果和上面一致):
SELECT * FROM your_table WHERE your_column NOT REGEXP '^[a-zA-Z0-9]*$';

^[a-zA-Z0-9]*$表示“从开头到结尾全是字母数字,允许空值”,加上NOT就会筛选出不符合这个规则的行,也就是包含非字母数字的内容。

如果要单独测试字符串,比如你例子里的'kjh$',可以用:

SELECT 'kjh$' RLIKE '[^a-zA-Z0-9]';

这个语句会返回1(代表true),说明该字符串包含非字母数字字符。

另外,如果你的列里可能存在NULL值,需要把这些行也包含进来的话,可以加个OR条件:

SELECT * FROM your_table WHERE your_column RLIKE '[^a-zA-Z0-9]' OR your_column IS NULL;

内容的提问来源于stack exchange,提问作者Frey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:40:13