问:我想用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中国
问:我想用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' 这两个字母已经被删除了)。 很漂亮,不是吗?
翻译
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。