如何验证数据库表列中是否存在特殊符号类无效值?
验证数据库列中是否存在特殊符号无效值的SQL方案
以下两种SQL查询可用于检测目标列中是否包含特殊符号形式的无效值:
方法1:正则表达式匹配法
利用正则表达式直接匹配非字母数字的字符,快速定位包含无效值的行:
select * from mytable where regexp_like(column_name,'[^[:alnum:]]');
逻辑说明:[^[:alnum:]]是正则表达式的字符类,代表非字母(大小写)、非数字的任意字符,只要列中存在这类字符,该行就会被查询返回。
方法2:translate函数校验法
通过字符替换后校验长度的方式判断是否存在特殊符号,适用于不支持正则的数据库场景:
select * from mytable where length(translate(column_name, '¿ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', '¿')) > 0;
逻辑说明:translate函数会将第二个参数内的所有合法字符(大小写字母、数字)替换为空(仅保留¿作为占位锚点),若处理后的字符串长度大于0,说明原列中存在不在合法列表内的特殊符号。
内容的提问来源于stack exchange,提问作者Bhalchandra Metkari
相关产品推荐
相关产品推荐

