我在数据库字段中有如下文本(SQL Server 2000)
"Led sledding leding led go led"
我希望SQL Command将单词led替换为LED,但它不应该更改像"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'请给我推荐一种更快更简单的方法。
发布于 2015-07-16 02:15:55
您没有(edit:最初没有)指定要使用的数据库。
大多数数据库供应商都有一个通用语法类似于或非常接近REPLACE( source-string, from-string, to-string )的函数,但是语法将根据您可以使用的通配符的类型或是否可以使用正则表达式而有所不同,并且在对象名称和字符串查找方面,不同的供应商区分大小写也有所不同。但是,将字符串替换为特定大小写的字符串将适用于每个供应商。
对于第一次传递,您可以尝试一些简单的方法,比如替换' led ' (两边都有一个空格),如下所示:
REPLACE( somefield, ' led ', ' LED ' )
TSQL确实支持一些适度高级的通配符搜索:https://msdn.microsoft.com/en-us/library/ms179859.aspx
发布于 2015-07-16 02:15:15
我认为,你只需要修改一些现有的数据一次,你不需要一个解决方案来不断使用。
那么你为什么不运行几个查询来轻松快速地解决你的问题呢?
UPDATE table SET field=regexp_replace(field, '^led ', 'LED ');
UPDATE table SET field=regexp_replace(field, ' led$', ' LED');
UPDATE table SET field=regexp_replace(field, ' led ', ' LED ');一定要检查db文档中函数的语法是否正确。
https://stackoverflow.com/questions/31437783
复制相似问题