使用nvarchar2和varchar2的Oracle行为表现相同。为什么?

时间:2014-05-15 18:04:21

标签: sql oracle oracle11g oracle10g

这是我对Oracle的实验

create table xxx (a varchar2(10), b nvarchar2(20))
insert into xxx values(N'严並', N'严 並 丧')
insert into xxx values('严並', '严 並 丧')
select * from xxx 

返回

a       b
严並   严 並 丧
严並    严 並 丧

虽然当我尝试插入'并丧并并'时,确实说我的列a的值太大,但它仍然会插入较小的值。

在Sql Server中,结果完全不同。在Sql Server中,您必须使用N前缀

a       b
??   严 並 丧
??    ? ? ?

是否意味着Oracle中不需要前缀N,或者它取决于字符集设置? 并且,这是否意味着Oracle,基本上仍然找到了如何在通常不为其设计的字段中存储“大”字符的方式?

谢谢

1 个答案:

答案 0 :(得分:0)

您的专栏“a”有长度限制。 您可以在下面执行sql来检查它:

select lengthb('並丧並並') from dual;  --12

不同操作系统和我的不同结果是12。