2015-01-14 6 views
1

Есть ли (предположительно) простой способ получить точное соответствие при использовании функции replace в SQL Server 2012? (Я открыт для других возможностей поиска, а также, конечно)найти точное совпадение строк и заменить его на сервере sql

Например, я использую следующий код, чтобы захватить все объекты БД, содержащие «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» с «Bluenose»

Давайте предположим, что я только хочу, чтобы заменить «Texter» и».texter 'версий этого и ничего другого (отмечая, что внутри каждого объекта возможно, что @texter или stupidtexter также могут присутствовать в объектном коде).

Есть ли способ, которым я могу различать варианты «texter», @texter и stupidtexter?

Благодаря

+0

использовать '=' или 'IN' для поиска точных совпадений, чтобы обновлять строки только там, где texter или .texter, то вы использовали бы WHERE Code IN ('texter', '.texter')' или вы можете что-то сделать например 'WHERE Code = 'texter' OR Code = '.texter'' –

+1

В инструкции replace, где« texter »вы могли бы не просто использовать« texter »и повторить операцию с« .texter »? – awright18

+0

@ awright18 Я мог бы, но тогда мне нужно будет использовать 2 оператора обновления, которые я бы хотел избежать, если это возможно. – Rolan

ответ

1

Решение было:

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

Благодаря Шон Ланге за ответ!

Смежные вопросы