Есть ли (предположительно) простой способ получить точное соответствие при использовании функции 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?
Благодаря
использовать '=' или 'IN' для поиска точных совпадений, чтобы обновлять строки только там, где texter или .texter, то вы использовали бы WHERE Code IN ('texter', '.texter')' или вы можете что-то сделать например 'WHERE Code = 'texter' OR Code = '.texter'' –
В инструкции replace, где« texter »вы могли бы не просто использовать« texter »и повторить операцию с« .texter »? – awright18
@ awright18 Я мог бы, но тогда мне нужно будет использовать 2 оператора обновления, которые я бы хотел избежать, если это возможно. – Rolan