SQL REPLACE函数

日期: 2008-12-01 作者:Rudy Limeback翻译:April 来源: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 Pkw……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

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' 这两个字母已经被删除了)。 很漂亮,不是吗?

翻译

April
April

相关推荐