重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
复制一段吧:
专注于为中小企业提供网站建设、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业东安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
通常情况下,字符集是在安装的时候选定好的,需要修改数据库的字符集Oracle建议的做法是重建数据库(EXP/EXPDP导出后再导入),虽然Oracle官方文档也有说如何修改字符集,但这不是Orale推荐的方法.下面是Oracle官方文档中提到的如何修改字符集的方法.
1.查看当前数据库字符集
select * from nls_database_parameters
where parameter='NLS_CHARACTERSET';
-----------------------------------
PARAMETER VALUE
NLS_CHARACTERSET WE8ISO8859P1
这里的字符集WE8ISO8859P1是不支持中文的
2.将字符集修改为中文字符集ZHS16GBK
SQL shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 734003200 bytes
Fixed Size 1221564 bytes
Variable Size 264244292 bytes
Database Buffers 465567744 bytes
Redo Buffers 2969600 bytes
Database mounted.
SQL ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL ALTER DATABASE OPEN;
Database altered.
SQL ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL startup
ORACLE instance started.
Total System Global Area 734003200 bytes
Fixed Size 1221564 bytes
Variable Size 264244292 bytes
Database Buffers 465567744 bytes
Redo Buffers 2969600 bytes
Database mounted.
Database opened.
这样将数据库的字符集由原来的WE8ISO8859P1修改成了ZHS16GBK,对原来的字符集有中文的显示的还是乱码,但对新入库的中文字符集就能正常显示.
更新前几个字符用substr函数。
如test表中有如下数据:
现要将“财务”二字改成“财务”,可用如下语句:
update test set dept='财务'||substr(dept,-1) where dept='财务部';
commit;
更新后结果:
通过Update语句将A表的某列值修改为B表中的指定列的值时,所用的sql语句在Oracle和SQL Server中是不一样的,
代码如下:
Oracle中的语句:
UPDATE A
SET A.COL1=(SELECT B.COL1 from B where A.KEY=B.KEY [and 其它限制(可选)] )
where 其它条件
SQL Server中更新语句:
update A
SET A.COL1=B.COL1
FROM A,B where A.KEY=B.KEY where 其它条件限制
若关联条件为多个,where后面用and 连接指定条件即可
试验了一下,确实存在这情况
在sqlplus里和plsql都有这种情况,但我在SQL Navigator里可以直接改
不过可以给你个笨方法
先
select (ascii('')) from dual ;
得到的ascii码是38
然后
Update xxx Set column = 'xxx'||chr(38)||'xx'
-----------补充------------
又找到一个办法,见图