有时候我们要检查几万条数据中是否有不合法的数字,就是不能用来计算,系统运行后会报错的数字。在时候会苦恼,因为数据量大即使知道有不合法的数据也查不出来非常的苦恼。看代码?
-- 不是数字的字符串
select ('45' REGEXP '[^0-9.]');
如果是数字的话结果就是0,不是的话就是1,这是用mysql的正则表达式判断的。
我们来看一下应用
select prmkey from a where (c2 REGEXP '[^0-9.]')='1';
prmkey是表中数据的主键,当字段c2中包含不是数字的时候就会查出来,这时候就可以修改数据了。
再来看一下如何判断字符串中是否包含中文
select * from a WHERE length(c1)!=char_length(c1)
因为中文的字节长度和字符长度不一样所有当两者不相等时就是中文。
还有就是用正则表达式判断的如下:
SELECT *,
CASE c6 REGEXP "[u0391-uFFE5]"
WHEN 1 THEN "不是中文字符"
ELSE "是中文字符"
END AS "判断是否是中文字符"
FROM zh_yw_ddgylx_copy1;