oracle中文字符问题

[复制链接]
查看11 | 回复9 | 2007-4-25 04:02:08 | 显示全部楼层 |阅读模式
select length('我') from dual;
结果是2,占用两个字节
是不是字符集设置问题,要怎么设置呢,注册表字符集设置,服务器字符集设置?有知道的帮助一下,谢谢!
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
正常啊
SQL> select length('我') from dual;
LENGTH('??')
------------
2
SQL> show parameter nls
NAME
TYPEVALUE
------------------------------------ ----------- ------------------------------
nls_calendar
string
nls_comp
stringBINARY
nls_currency
string
nls_date_format
string
nls_date_language
string
nls_dual_currency
string
nls_iso_currency
string
nls_language
stringAMERICAN
nls_length_semantics
stringBYTE
nls_nchar_conv_excp
stringFALSE
nls_numeric_characters
string
nls_sort
string
nls_territory
stringAMERICA
nls_time_format
string
nls_time_tz_format
string
nls_timestamp_format
string
nls_timestamp_tz_format
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
不正常
SQL> select length('我'),lengthb('我') from dual;

LENGTH('我')LENGTHB('我')
------------ -------------
1
2
length返回的是字符数,lengthb返回的是字节数
SQL> select * from v$nls_parameters where parameter = 'NLS_LANGUAGE';

PARAMETER
VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESE
楼主可能和楼上设置的一样了
[ 本帖最后由 homeworld80 于 2008-9-2 11:17 编辑 ]
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
是占用2个字节,length返回的是字符串的长度,它使用定义好的输入的字符集计算长度,估计的字符集是英文字符集吧,所以返回2
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
楼主可以把相关的信息贴出来。
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
create table chartest(a varchar2(2));
insert into chartest values('我们');
---这个报错,实际值为6,最大值2
select lengthb('我') from dual;
结果为3

怎么设置使一个字符占一个单位呢,就是a字段设计成varchar2(2)的话,可以插入两个中文字符.英文正常
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
做不到吧,除非有字符集可以支持一个汉字占一个字节,有吗?
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
lz的字符集可能是unicode吧?一个汉字占3个字节
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
AL32UTF8是这个!
是不是varchar2(4000)要设成gb2312,这样就能存储2000个中文呢?oracle中一个中文最少占两个字节?
回复

使用道具 举报

千问 | 2007-4-25 04:02:08 | 显示全部楼层
这个和字符集有关
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行