我在数据库字段(SQL Server 2000)上有如下文字
"Led sledding leding led go led"
我希望SQL Command将单词led
替换为LED
,但它不应该改变像#s; sledding"这样的单词。 /" leding"
有15,000条记录类似的记录。需要将它应用于所有这些。
我试过以下但是需要超过24小时。 (在光标中)
update rprd
set dsc = replace(dsc, 'led ', 'LED ')
where dsc not like 'LED %' collate sql_latin1_general_cp1_cs_as
and dsc like 'led %'
update rprd
set dsc = replace(dsc, ' led ', ' LED ')
where dsc not like '% LED %' collate sql_latin1_general_cp1_cs_as
and dsc like '% led %'
update rprd
set dsc = replace(dsc, ' led', ' LED')
where dsc not like '% LED' collate sql_latin1_general_cp1_cs_as
and dsc like '% led'
请建议我采用更快捷,更简单的方法。
答案 0 :(得分:2)
你没有(编辑:最初 )指定您正在使用的数据库。
大多数数据库供应商都具有一般语法的功能,或者非常接近REPLACE( source-string, from-string, to-string )
,但语法会因您可以使用哪种通配符或者是否可以使用正则表达式而有所不同,并且供应商在对象名称和字符串查找方面的敏感度不同。但是,使用特定案例的字符串替换字符串将适用于每个供应商。
对于第一次传递,您可以尝试一些简单的事情,例如替换' led '
(以其两侧的空格引导),如下所示:
REPLACE( somefield, ' led ', ' LED ' )
TSQL确实支持一些适度高级的通配符搜索:https://msdn.microsoft.com/en-us/library/ms179859.aspx
答案 1 :(得分:0)
我认为,您只需要纠正一些现有数据,而您不需要经常使用的解决方案。
那么为什么不运行一些能够轻松快速地解决问题的查询呢,
class String
def split_delim delim
split(delim, -1)[1...-1].reject(&:empty?)
end
end
"00XXX00XX0X00X00".split_delim "X"
# ["00", "0", "00"]
"splitting this long string is my mission".split_delim "is"
# [" long string ", " my m"]
确保检查有关函数语法的db文档