重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎样让Oracle支持中文
创新互联专注于顺城企业网站建设,响应式网站建设,购物商城网站建设。顺城网站建设公司,为顺城等地区提供建站服务。全流程按需规划网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
需要修改字符集。
Oracle修改服务器端字符集:
SQLSHUTDOWN IMMEDIATE;
SQLSTARTUP MOUNT;
SQLALTER SYSTEM ENABLE RESTRICTED SESSION;
SQLALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQLALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQLALTER DATABASE OPEN;
SQLALTER DATABASE CHARACTER SET ZHS16GBK;
只要中文的,比较难,你确定你的表中没有韩文,日文,这就好办啊!
无论是阿拉伯数字,还是英文字母,ascii码最大不超过122
select * from tab where ascii(att1)122; 试试可以吗
如果不考虑性能的话,可以这么做
select * from tab where substr(trim(attr),1,4)=substrb(trim(attr)1,4);
这需要考虑你的数据库字符集,如何是ZHS16GBK的话,2位中文,如果是AL32UTF8,是3位~4位中文
数据库端只要不是用7位的字符集(如:UTF-7)就行,用UTF-8可以。关键在于客户端使用的字符集必须与数据库端使用的字符集匹配起来。否则,数据库显示正常,客户端可能会显示乱码!
两个方法:
1.用到正则中的regexp_like
个人感觉可能是regexp_like(字段,'[^[:alphanum:]]')
意思是在字段中匹配非0-9,a-z,A-Z的字段,如果能匹配到,那么可以认为是汉字,否则就不是汉字,当然如果字段中还包含符号,比如加减号什么的,那么那么可能更麻烦一些。
2.用lengthb,与length比长度。如果二者长度相等,那么就没有中文字符(因为中文字符一个占用两个字节)。如果lengthb长度大于length长度,那么一般就说明里面存在中文字符。
利用以下sql:
select col from t where length(col)*2=lengthb(col)
and regexp_like(col,'^[^[:punct:]]*$');