SQL> select value from V$NLS_PARAMETERS where parameter = 'NLS_CHARACTERSET';VALUE
----------------------------------------------------------------
ZHS16GBK已用时间: 00: 00: 00.00
SQL> select * from ta; ID NAME
---------- ----------
1 a
2 a
3 a
2 a已用时间: 00: 00: 00.80
SQL> update ta
2 set name='樑 '
3 where id=1;已更新 1 行。已用时间: 00: 00: 00.20
SQL> update ta set name='樑 '
2 where id=1;已更新 1 行。已用时间: 00: 00: 00.10
SQL> select * from ta; ID NAME
---------- ----------
1 樑
2 a
3 a
2 a已用时间: 00: 00: 00.40看你的提示信息以及后来能成功,肯定跟字符集没什么关系
我这里测试没发现什么异常
'樑'
'樑 ' 多了一个空格的你把最后的空格去掉试一试
'樑'
'樑 ' 多了一个空格的你把最后的空格去掉试一试
我注意到了,我也试过了,没有问题
很奇怪的问题啊SQL> update ta
2 set name='樑'
3 where id=1
4 /已更新 1 行。已用时间: 00: 00: 00.10
select chr(39109) from dual;
看是不是那个字
再执行
update yk_job_info
set user_name = chr(39109)
where register_no = '01542000070004'
/
看有没有问题
----------------------------------------------------------------
ZHS16CGB231280SQL> create table aa(id varchar2(1),name varchar2(10));Table createdSQL> insert into aa values('1','dd');1 row inserted
SQL> update aa set name='樑 ';1 row updatedSQL> select * from aa;ID NAME
-- ----------
1 ?SQL> update aa set name='樑';1 row updatedSQL> select * from aa;ID NAME
-- ----------
1 ?变成了问号,与字符集有关
---------------------------------------------------------------
SQL> select * from V$NLS_PARAMETERS where PARAMETER='NLS_LANGUAGE';PARAMETER VALUE
----------------------------------------------
NLS_LANGUAGE AMERICANSQL> select * from aa;ID NAME
-- ----------
1 ?
SQL> select '樑' from dual
2 /
ERROR:
ORA-01756: quoted string not properly terminated还有:这仅仅是跟characterset有关,与language和TERRITORY没有关系的~~~
SQL> select '樑' from dual
2 /
ERROR:
ORA-01756: quoted string not properly terminated还有:这仅仅是跟characterset有关,与language和TERRITORY没有关系的~~~
不过你这样放入的数据恐怕不能正常显示
刚才作了一下试验
修改客户端字符集为ZHS16CGB231280
inert into ta values(6,'樑 ');
然后再改回ZHS16GBK
SQL> select * from ta; ID NAME
---------- ----------
6 ??
1 樑
2 a
3 a
2 a已用时间: 00: 00: 00.11
SQL>
不过你这样放入的数据恐怕不能正常显示
刚才作了一下试验
修改客户端字符集为ZHS16CGB231280
inert into ta values(6,'樑 ');
然后再改回ZHS16GBK
SQL> select * from ta; ID NAME
---------- ----------
6 ??
1 樑
2 a
3 a
2 a已用时间: 00: 00: 00.11
SQL>
2 /1 row updated.SQL> commit;Commit complete.SQL> select * from test_table
2 / ID B
--------- ----------
樑 至于你举例的情况,我也不知道为什么。
感谢参与,贴出一个极其good的地址以回报
http://www.exzilla.net/docs/nls/oracleNLS01.php