Заменить и удалить текст из строки на сервере SQL - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть строка, подобная следующей, это образец

<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:'

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

РЕДАКТИРОВАТЬ:

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

  2. Как я объяснил в своем вопросе, я не просто хочу заменить и удалить шаблон, но заменить ### TaskDefId =seomnumber ### with 'STAGE CHANGED:', если последнее вхождение шаблона и текущий совпадают, и удаляется, если последнее вхождение шаблона и текущего отличается.

Спасибо

1 Ответ

0 голосов
/ 15 декабря 2010

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

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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...