问:我想用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' 这两个字母已经被删除了)。 很漂亮,不是吗?
翻译
相关推荐
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。
-
如何应对Oracle EBS实施中的六个挑战?
在18个月的时间里,Vitamix启动运行了Oracle电子商务套件(E-Business Suite,EBS),而且Vitamix还对诸如Oracle ATG Web Commerce等所有页面属性进行了重新整理,并实现了全球数据中心。
-
Oracle的云产品“砸了自己脚”?
Sparc和Solaris都是Oracle云计划的一部分,但是硬件和支持人员的减少意味着本地Solaris和Sparc将变得更加稀少。
-
2017年3月数据库流行度排行榜 Oracle卫冕之路困难重重
时隔一个月,数据库市场经过一轮“洗牌”,旧的市场格局是否会被打破,曾经占巨大市场份额的企业是否可能失去优势?