如何去除Oracle库表结构中的类空格字符
2013-03-12 09:43
225 查看
在涉及数据库操作的工作中,我们常会遇到对2个字符串进行等值比较而非模糊查询:例如比较2个姓名是否相等?但操作人员在将字符串录入系统的时候,可能会录入空格,或者是TAB健(我把这样的看起来像空格,可能实际上并不是空格的字符称为类空格字符),这样在比较的时候肯定是不等的。怎么办?
1.首先是去除空格在进行比较(比如,把姓名中的所有空格去除):
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。
最后发现,杀鸡用了牛刀,因为问题很简单。但采用第3.提到的先取得ASCII码值再来进行剔除的方法,具有通用性!
转自 http://www.linuxidc.com/Linux/2011-08/41605.htm
1.首先是去除空格在进行比较(比如,把姓名中的所有空格去除):
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。
最后发现,杀鸡用了牛刀,因为问题很简单。但采用第3.提到的先取得ASCII码值再来进行剔除的方法,具有通用性!
转自 http://www.linuxidc.com/Linux/2011-08/41605.htm
相关文章推荐
- 如何去除Oracle库表结构中的类空格字符
- C# 如何用多个字符来切分字符串并去除空格
- (转)oracle中如何对字符串进行去除空格的方法
- oracle如何去除某个字段中两边的空格?
- oracle中如何对字符串进行去除空格的方法
- oracle中如何对字符串进行去除空格的方法
- 如何批量去除EXCEL单元格中的空格字符?
- (转)oracle中如何对字符串进行去除空格的方法
- oracle中如何对字符串进行去除空格的方法
- oracle如何去除字符串中的重复字符
- 如何将一个字符数组里的值赋给CString但要求将末尾的空格去掉?
- NSString去除两边空格字符,like trim()[转]
- 如何使用sql查询数据库表结构的设计(sqlserver,oracle)
- Oracle中如何插入特殊字符: & 和 ' (多种解决方案)
- Javascript中去除两边的空格和JS中判断字符串中是否包含某字符
- Oracle中如何用SQL检测字段是否包括中文字符
- 去除字符串的首尾空格字符
- CI框架如何把视图文件压缩输出,得到去除了空格注释的html代码
- 将Oracle数据,以及表结构如何传输至MySQL
- oracle删除字段中的空格、回车及指定字符