首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定模式的SQL替换

给定模式的SQL替换
EN

Stack Overflow用户
提问于 2015-07-16 02:01:31
回答 2查看 181关注 0票数 0

我在数据库字段中有如下文本(SQL Server 2000)

"Led sledding leding led go led"

我希望SQL Command将单词led替换为LED,但它不应该更改像"sledding“/ "leding”这样的单词。

有15,000条记录具有相似的文本。需要将此应用于所有这些应用程序。

我试着跟踪,但需要超过24个小时。(在光标中使用)

代码语言:javascript
复制
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'

请给我推荐一种更快更简单的方法。

EN

回答 2

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2015-07-16 02:15:15

我认为,你只需要修改一些现有的数据一次,你不需要一个解决方案来不断使用。

那么你为什么不运行几个查询来轻松快速地解决你的问题呢?

代码语言:javascript
复制
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文档中函数的语法是否正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31437783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档