可以通过replace函数来获取特定字符串后,进行字段更新实现:
sql:update
tablename
set
name=replace(name,'替换前字段','替换后字段')
where
name
like
'%替换前字段%'.
上面的sql语句的意思是替换tablename中name字段的"替换前字段"为"替换后字段",
where后面的语句是筛选出字段中带有"替换前字段"的name值.
上面的回答都是对的,还是多说一句,如果你只是想改最后一个字符(xx这两个字符中也含有"变"不需要改):
udpate
test
=
substr(name
,1,length(name
)
-
||
'站';
commit;
若确认xx两个字符不含"变",或者含的话也要改掉,那么:
update
replace(name,'变','站');commit;
Simplified
对于子集到超集的转换,Oracle是允许的,但是对于超集到子集的转换是不允许的.一般对于超集到子集的转换,建议是通过dbca删除原来的数据库,重新再建库,选择正确的字符集,然后导入备份.
备份数据库中所有用户的数据
以oracle用户登陆,执行以下命令
#
export
NLS_LANG
"SIMPLIFIED
保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据.
转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况.如果评估情况糟糕,那就绝对要放弃了.
先安装属于
CSMIG
用户的一套表和过程.以oracle用户登陆UNIX,
#sqlplus
"/
as
sysdab"
SQL@$ORACLE_HOME/
rdbms/admin/csminst.sql
SQLexit
$ORACLE_HOME\bin\csscan
-help
可以更清楚如何使用csscan.
$ORACLE_HOME/bin/csscan
system/sunday
user=mmsc
csscan.log
查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换"Exceptional"的情况,所以呢可以更放心一点.
前面说过,通过命令"Alter
Database
Characeter
Set
XXXX",实现从超集到子集的转换,在Oracle是不允许的.但是该命令,提供这样的命令方式:
Alter
Character
INTERNAL_CONVERT/
INTERNAL_USE
XXXX
这是Oracle的非公开命令."在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,你必须清楚这一操作会带来的风险".
以oracle用户登陆UNIX,
#sqlplus
sysdba"
SQL
SHUTDOWN
IMMEDIATE;
STARTUP
MOUNT;
ALTER
SESSION
SET
SQL_TRACE=TRUE;
SYSTEM
ENABLE
RESTRICTED
SESSION;
JOB_QUEUE_PROCESSES=0;
AQ_TM_PROCESSES=0;
DATABASE
OPEN;
CHARACTER
//如果不使用"INTERNAL_USE"参数,系统会提示出错:
//ERROR
at
line
new
character
must
be
a
superset
of
old
SQL_TRACE=FALSE;
STARTUP;
此时,检查一下数据库的字符集是否更改过来
select
value$
from
props$
name='NLS_CHARACTERSET';
VALUE$
-----------------
紧接着检查一下数据库中简体中文、繁体中文是否正常,不会出现乱码.
SQLselect
spid,spname,spshortname
spinfovisual_hk
......
非常不幸,我看到了一堆乱码,这也证明了Oracle不支持字符集从超集到子集的更改,当时心里很紧张,很怕失败,从而恢复到原样.
导入备份的用户数据
还是以oracle用户登陆UNIX,
先删除库中的用户mmsc:
SQLdrop
user
mmsc
cascade;
再运行createuser.sql,生成mmsc用户.
然后使用原来的备份文件,导入到mmsc用户中:
#imp
ignore=y
fromuser=mmsc
touser=mmsc
马上查看数据库中简体、繁体中文,哈哈,没有乱码了,一切显示正常.
以上就是土嘎嘎小编为大家整理的oracle怎么换字符相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!