2010-12-15 1 views
0

У меня есть строка, как в следующем, это образецЗаменить и удалить текст из строки в SQL сервере

<b>22/10 - 10:47 - wes:</b> ###TaskDefId=46###N Enq - Send Quote<b><br/>29/10 - 15:55 - grn: Some Text ###TaskDefId=31### ABC - DEFG HIJ<b><br/>22/10 - 12:29 - white: .... 

Пожалуйста, смотрите ниже это полная строка, оригинальный внешний вид, как выше, я удалил b и br чтобы сделать его более понятным. В конце каждой строки я записываю, что хочу удалить и что хочу заменить.

22/10 - 10:47 - wes: ###TaskDefId=46###N Enq - Send Quote    '###TaskDefId=46###N Enq - Send Quote' This should be removed completely 
29/10 - 15:55 - grn: Some Text ###TaskDefId=31### ABC - DEFG HIJ   '###TaskDefId=31###' This should be replaced with 'STAGE CHNAGED:' 
22/10 - 12:29 - white: Eamiled ###TaskDefId=31### Qtd - Email and Email  '###TaskDefId=31###Qtd - Email and Email' This should be removed completely because last stage was exactly same 
29/10 - 16:26 - wesl: Spoke ###TOaskDefId=48### CTD - DDDDDD   '###TOaskDefId=48###' This should be replaced with 'STAGE CHANGED:' becaue last stage was different 
09/12 - 13:12 - wesl: Spoke ###TaskDefId=31### CTD - DDDDDD   '###TaskDefId=31###' This should be replaced with 'STAGE CHANGED:' becaue last stage was different 
15/11 - 18:41 - white: Some xxxx ###TaskDefId=31### DDD AND - CDD TDED  '###TaskDefId=31###' This should be removed. 
09/12 - 13:12 - wesl: Balanced ###TaskDefId=23### SDTED DERDDW   '###TaskDefId=23###' This should be replaced with 'STAGE CHANGED:' 

Если вопрос выглядит грязным, скопируйте и вставьте в блокнот, и я надеюсь, что этот вопрос будет иметь смысл. Позвольте мне еще раз сказать вам, что это одна строка не разных строк.

EDIT:

  1. Эта строка находится в одном столбце таблицы и мне нужно обновить тот же столбец после этих изменений.

  2. Как я объяснил в моем вопросе , что я не хочу, чтобы заменить и удалить шаблон, но заменить где ### TaskDefId = seomnumber ### с «ЭТАП ИЗМЕНЕНО:» если последнее вхождение рисунка и текущего точно такой же и удаляется, если в прошлом возникновение рисунка и текущий отличается.

Благодаря

+0

Можете ли вы показать нам, как выглядит ваша структура таблицы? Самое главное: что ** datatype ** содержит этот столбец, который содержит эти данные? – 2010-12-15 14:05:25

+0

Спасибо @marc_s. DataType - VARCHAR (MAX), и у меня есть эта строка в одном столбце с именем NotesHistory, и после этих изменений мне нужно обновить один и тот же столбец. – Kashif 2010-12-15 14:24:06

ответ

0

Вы можете использовать -

SELECT REPLACE (string_expression , string_pattern , string_replacement) 
GO 

Но в строке я вижу много моделей, которые вы хотите заменить. Я хотел бы предложить, вы можете использовать что-то вроде -

Declare @String_Original nvarchar(max) 
DECLARE @Replacement1 nvarchar(50) 
DECLARE @Pattern1 nvarchar(50) 

@String_Original = 'your string' 
@Pattern1 = '###TaskDefId=31###' 
@Replacement1 = 'STAGE CHNAGED:' 

SELECT REPLACE(@String_Original,@Pattern1,@Replacement) 

Теперь вам придется сделать это несколько раз, пока вы заменили все шаблоны, которые вы хотите заменить.

Может быть что-то вроде -

DECLARE @Replacement2 nvarchar(50) 
DECLARE @Pattern2 nvarchar(50) 

@String_Original = 'your string' 
@Pattern2 = '###TaskDefId=46###N Enq - Send Quote' 
@Replacement2 = '' 

SELECT REPLACE(@String_Original,@Pattern2,@Replacement2) 

И, сделать это для всех моделей, которые будут заменены. Но, если шаблон, который нужно заменить, является динамичным, и вы не знаете его заранее, я боюсь, что простая, прямая переписка не поможет вам. Вам нужно будет написать функцию или хранимую процедуру с помощью вашей логики, чтобы найти шаблоны и заменить их.