1.首先是去除空格在进行比较(比如,把姓名中的所有空格去除):
成都创新互联公司是一家专注于做网站、成都网站设计与策划设计,花都网站建设哪家好?成都创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:花都等地区。花都做网站价格咨询:028-86922220
Update table_name set xm=replace(xm , ' ') ;
如果要查找哪些记录含有' ',可用相关的语句查找。
然后可进行比较。
2.但是我们可能会发现,有些姓名中间或末尾还有类似空格的字符没被去掉,但它们显然已经不是一般的空格了,那么怀疑是Tab健作怪。于是参照网上说的去掉TAB键的办法来处理,用chr(9)来替代空格键(TAB键的ASCII值为9)。先取一条带有类空格字符的记录来做实验:
SELECT replace(xm, chr(9) ) from table_name where bh=’xxx’;
用这个办法会去掉一些真正的Tab键空格,然后采取批量更新的办法。
3.但我遇到的情况没有这么幸运,没能去掉类空格键。怎么办呢?我决定尝试先取得这个类空格键的ASCII码值,然后再用chr(ASCII码值)的方法来处理。
①.取得含类空格键整个字符串的长度 length(),从而确定出类空格键在字符串中的起始位置、类空格键的长度。
②.求出类空格键的ASCII码值:ascii(substr(xm,n,m)); n为类空格键的起始位置;m为长度。
③.SELECT replace(xm, chr(第②步求得的ASCII码值) ) from table_name where bh=’xxx’;
问题得以解决。但我发现,上述第②步求得的ASCII码值为41377,这应该是一个汉字的ASCII码值,看起来又像空格,于是我怀疑,会不会是中文状态下的空格键、TAB键?尝试之后发现不是。我又怀疑,是不是全角、半角的区别?因为我们一般输入字符,是在半角下输入的。我按照第一步“1.首先是去除空格在进行比较……”尝试,输入全角下的空格,进行查找,结果惊喜出现,原来所有未剔除掉的类空格,是全角状态下输入的空格,并接证实了全角下输入的空格,其ASCII码值为41377。
replace 可以
SQL code?
select replace('"657567556"','"','') from dual;
trim也行,其中leading 去前面的“,trailing 去后面的”,both去两边的“
SQL code?
select trim(both '"' from '"657567556"') from dual;
设置方法如下:
1、找到$ORACLE_HOME/client_1/network/admin目录下的tnsnames.ora文件,并用文本模式打开。
2、添加以下内容:
本地实例名=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 数据库IP地址)(PORT = 端口号))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 服务名)
)
)
3、用PL/SQL工具登录即可。
oracle数据库大小写敏感设置
将sec_case_sensitive_logon初始化参数设置为false后就不区分密码大小写了。
sql show parameter sec_case_sensitive_logon
name type value
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon boolean true
sql
sql alter system set sec_case_sensitive_logon = false;
system altered.
sql
conn / as sysdba
alter system set sec_case_sensitive_logon = false;
sql conn test2/test2
connected.
sql conn test2/test2
connected.
sql
需要记住的是,即使大小写敏感密码参数没有启用,在保存密码时也是区分了大小写的,以便以后在启用大小写敏感参数时有效,
下面的代码先禁用了大小写敏感密码,然后创建了一个包含大小写字符密码的用户。
replace:将字符里面的双引号替换成空格
select replace(' "657567556" ' , ' " ' , ' ') from dual;
trim:去双引号。trim中参数,leading 去前面的,trailing 去后面的,both去两边的
select trim(both ' " ' from ' "657567556" ') from dual;