Sql server 在sql server中查找完全匹配的字符串并替换它

Sql server 在sql server中查找完全匹配的字符串并替换它,sql-server,Sql Server,在SQL Server 2012中使用replace函数时,是否有一种(据推测)简单的方法来获得精确匹配?(当然,我也愿意接受其他搜索可能性) 例如,我正在使用以下代码在某个时刻获取数据库中包含“texter”的所有对象: select OBJECT_NAME(object_id) name, OBJECT_DEFINITION(object_id) code, type into #tester from sys.objects where OBJECT_DEFIN

在SQL Server 2012中使用replace函数时,是否有一种(据推测)简单的方法来获得精确匹配?(当然,我也愿意接受其他搜索可能性)

例如,我正在使用以下代码在某个时刻获取数据库中包含“texter”的所有对象:

select OBJECT_NAME(object_id) name,
       OBJECT_DEFINITION(object_id) code,
       type
into #tester
from sys.objects
where OBJECT_DEFINITION(object_id) LIKE '%texter%'
这似乎无法区分.texter、@texter或stupidtexter

因此,如果我使用:

update #tester 
set code = REPLACE(code, 'texter', 'bluenose')
where code LIKE '%texter%'
它将用“蓝鼻子”取代“texter”的任何变体

让我们假设我只想替换这个的“texter”和“.texter”版本,而不做其他任何事情(注意,在每个对象中,@texter或stupidtexter可能也存在于对象代码中)

有没有办法区分“texter”、“@texter”和“stupidtexter”的变体

谢谢

解决方案是:

replace(REPLACE(code, '.texter', 'bluenose'), ' texter', 'bluenose')

感谢肖恩·兰格的回答

使用
=
IN
运算符查找精确的匹配项,仅更新texter或.texter所在的行,然后使用
where code IN('texter','.texter'))
或者您可以在replace语句中执行类似于
的操作,其中code='texter'或code='.texter'
中的“texter”是什么?您是否可以使用“texter”并使用“.texter”重复该操作?@awright18我可以,但是,如果可能的话,我需要使用两个update语句,我希望避免使用。如果可以,那么您就不必执行两个更新,只需执行嵌套替换。替换(替换(代码“.texter”、“bluenose”)、“texter”、“bluenose”)