orcale中判断字段是否含有中文

现有表 cs_name 如下
在这里插入图片描述
方法一:
判断 length() 是否等于lengthb(),中文占两个字节

length表示的是字符串的字符长度
lengthb表示的是字符串的字节长度

--查询不包含中文
select name from cs_name where length(name) = lengthb(name);

--查询包含中文的
select name from cs_name where length(name) <> lengthb(name);

方法二:
使用 asciistr()函数
ASCIISTR函数,参数是一个字符串,如果这个字符在ASCII码表中有,则转成ASCII表中的字符。
如果没有,则转成\xxxx格式,xxxx是UTF-16的编码。
如果表中只有中文和英文、数字等字符,则可以用\来判断是否带有中文。

--- 查询包含中文的
select name from cs_name where asciistr(name) like '%\%';
--  查询不包含中文
select name from cs_name where asciistr(name) not like '%\%';

方法三:
使用 convert() 函数
CONVERT( string1, char_set_to [, char_set_from] )
string1:要转换的字符串。
char_set_to:要转换为的字符集。
char_set_from:可选的,要从中转换的字符集。

--- 查询包含中文的
select name from cs_name where name <> convert(name, 'ZHS16GBK', 'UTF8');

mysql中判断字段中是否含有中文

判断 length()char_length() 是否相等

  SELECT name FROM user WHERE length(name) != char_length(name)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐