SQL REPLACE函数

 
   | |

导读:我想用REPLACE语句替换AddressLine1域里面的数据,也就是想删除逗号、周期、连字符,并将 3 South替换成3 S(as in 123 South Main Street to 123 S Main Street),加上 95件其他的事情 。

关键词:Oracle Oracle SQL SQL REPLACE函数

正在加载数据...

【TechTarget中国原创】我想用REPLACE语句替换AddressLine1域里面的数据,也就是想删除逗号、周期、连字符,并将 '3 South '替换成'3 S ' (as in 123 South Main Street to 123 S Main Street),加上 95件其他的事情 。

【TechTarget中国原创】:我想用REPLACE语句替换AddressLine1域里面的数据,也就是想删除逗号、周期、连字符,并将 '3 South '替换成'3 S ' (as in 123 South Main Street to 123 S Main Street),加上 95件其他的事情 。

  我需要指出的是如何将' Road' at the end of the address to '替换成' Rd' ,但是要在不改变地址的情况下进行,如将 '2884 N Roadrunner Pkwy'改变为'2884 N Rdrunner Pkwy'。为了达到这个目的,我要进行如下操作:REPLACE(' Road[ENDOFLINE]',' Rd[ENDOFLINE]')。但是很显然这样做不起作用。

  答:首先就是整理地址这样繁重的工作。这真的属于一项比较烦人的任务之一,但是在数据库外面进行该操作要比用SQL进行操作好得多(这点我相信你应该知道:如何面临要改变的95东西)。

  假设你现在用的数据库系统包括REPLACE 函数(不是所有的数据库系统都是这样)。你要找的REPLACE 如下:


UPDATE yourtable  
       SET AddressLine1   
         = REPLACE(AddressLine1, ' Road', ' Rd')  
     WHERE AddressLine1 LIKE '% Road'  

  只有以' Road'.结尾的那些行才能进行更新操作。注意LIKE字符串开头有个通配符,但是没有结尾的通配符。



WHERE AddressLine1 LIKE '% Road'  
       AND DATALENGTH(Replace(AddressLine1, ' Road', ' Rd'))   
         = DATALENGTH(AddressLine1)-2  

  这一附加条件是用的是相同的 REPLACE函数,并且将结果长度就好比是原列值长度。因为我们只想替换一件事情,由于LIKE条件的限制,被替换的这件事情只能位于末尾,新的长度也只会比原来的长度小2(因为'oa' 这两个字母已经被删除了)。 很漂亮,不是吗?

 
查看全文
 
 
 
 
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录