SELECT col FROM table WHERE length(col)!=char_length(col)
当字符集为UTF-8,并且字符为中文时,length() 和 char_length() 两个方法返回的结果是不相同的。
背景:用户表中的name存的是用户名字的拼音和中文。
需求:名字去除掉所有的中文字符。
解决方案:
通过CONVERT(name USING ASCII)把中文转换为?,然后再进行替换。
引申问题:怎么判断字段包含中文字符
方法1:查询CONVERT(name USING ASCII)转换为后有?的数据。
方法2:通过正则表达式查询,'[^ -~]'或'e[4-9][0-9a-f]{4}'或者'^(..)*(E[4-9])'表示含中文。
方法3:通过length()和char_length()返回值不同进行查询。
参考链接:
( https://blog.csdn.net/u012731379/article/details/64125572 )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)