MYSQL判断字符串是否全中文
正则表达式 | 匹配 |
---|---|
[一-龥] | 中文字符 |
[ a-zA-Z] | 英文字母 |
[ 0-9] | 数字 |
[ぁ-ゞァ-ヾ] | 日文字符 |
1.查询存在非中文的记录 :select * from tablename where columnname REGEXP '[^一-龥]';
2.查询存在中文的记录:select * from columnname where columnname REGEXP '[一-龥]';
DM达梦判断字符串是否全中文
create or replace function SPECIALEXISTS(str varchar2)
return integer
as
/*汉字unicode编码表:
字符集 字数 Unicode 编码
基本汉字 20902字 4E00-9FA5
基本汉字补充 38字 9FA6-9FCB
扩展A 6582字 3400-4DB5
--扩展B 42711字 20000-2A6D6
扩展C 4149字 2A700-2B734
扩展D 222字 2B740-2B81D
康熙部首 214字 2F00-2FD5
部首扩展 115字 2E80-2EF3
兼容汉字 477字 F900-FAD9
兼容扩展 542字 2F800-2FA1D
PUA(GBK)部件 81字 E815-E86F
部件扩展 452字 E400-E5E8
PUA增补 207字 E600-E6CF
汉字笔画 36字 31C0-31E3
汉字结构 12字 2FF0-2FFB
汉语注音 22字 3105-3120
注音扩展 22字 31A0-31BA
〇 1字 3007*/
--判断是否全中文,返回0:表示包含非中文,返回1:表示全中文
v_flag integer :=0;
v_temp varchar2(120);--根据实际情况设置字段大小
begin
if str is null then
return 0;
end if;
for x in 1.. length(str) loop
v_temp:=asciistr(substr(str,x,1));
if (v_temp between '\4E00' and '\9FCB')
or (v_temp between '\3400' and '\4DB5')
or (v_temp between '\2A700' and '\2B734')
or (v_temp between '\2B740' and '\2B81D')
or (v_temp between '\2F00' and '\2FD5')
or (v_temp between '\2E80' and '\2EF3')
or (v_temp between '\F900' and '\FAD9')
or (v_temp between '\2F800' and '\2FA1D')
or (v_temp between '\E815' and '\E86F')
or (v_temp between '\E400' and '\E5E8')
or (v_temp between '\E600' and '\E6CF')
or (v_temp between '\31C0' and '\31E3')
or (v_temp between '\2FF0' and '\2FFB')
or (v_temp between '\3105' and '\3120')
or (v_temp between '\31A0' and '\31BA') then
v_flag:=1;
else
return 0;
end if;
end loop;
return v_flag;
end;