联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
1、查看数据库字符集
select * from nls_database_parameters where parameter like '%CHARACTERSET';
2、计算字符长度标准(是按照byte还是按照character)
show parameter NLS_LENGTH_SEMANTICS; select * from nls_database_parameters where parameter = 'NLS_LENGTH_SEMANTICS'; --note:这个只对char和varchar起作用,nchar、nvarchar、nclob长度是按照character计算
3、插入数据,查看其存入数据的16进制内容和编码
create table t(id int,name varchar2(20),name1 nvarchar2(20)); insert into t values(1,'程飞','程飞'); select dump(name,1016),dump(name1,1016) from t; --结果 Typ=1 Len=6 CharacterSet=AL32UTF8: e7,a8,8b,e9,a3,9e Typ=1 Len=4 CharacterSet=AL16UTF16: 7a,b,98,de
4、查询客户端nls相关参数信息
select * from nls_session_parameters;
5、配置nls相关参数
主要是配置NLS_LANGUAGE和NLS_TERRITORY或者配置NLS_LANG实现
5.1、设置NLS_LANG(环境变量级别)
或者使用:
set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
5.2、session级别设置:
alter session set nls_date_format='yyyy-mm-dd'; exec sys.dbms_session.set_nls('nls_date_format','dd.mm.yyyy');
5.3、sql语句级别:
select to_char(sysdate,'yyyy_mm_dd hh24:mi:ss', 'nls_date_language=''SIMPLIFIED CHINESE''') from dual;
note:优先级:sql语句级别>session级别>环境变量级别
六、排序
设置nls_sort决定
--拼音排序 alter session set nls_sort=schinese_pinyin_m;select * from orders order by name; select * from orders order by nlssort(name,'nls_sort=schinese_pinyin_m'); --笔画排序 alter session set nls_sort=schinese_stroke_m;select * from orders order by name; select * from orders order by nlssort(name,'nls_sort=schinese_stroke_m'); --汉字部首排序 alter session set nls_sort=SCHINESE_RADICAL_M;select * from orders order by name; select * from orders order by nlssort(name,'nls_sort=SCHINESE_RADICAL_M'); --note:在sql语句级别的排序上可以使用nls_sort后面value可以使用双"'"表示整体
7、相关视图
nls_database_parameters–数据库初始化文件中的nls信息
nls_session_parameters–当前session中的nls信息
v$nls_valid_values–查看CHARACTERSET、SORT、TERRITORY、LANGUAGE中可以设置的相关参数
v$nls_parameters–对nls_database_parameters和nls_session_parameter中的nls信息的补充