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)