SQL строка удаляет подстроку неизвестной длины - PullRequest
0 голосов
/ 09 марта 2020

Очень простая проблема в SQL, которую, похоже, я не могу найти легким решением.

@ Input: 'GoodFilter in (2, 3, 100) и BadFilter in ( 11, 23, 24, 25) и AnotherFilter в (1, 2) '

@ DesiredOutput:' GoodFilter in (2, 3, 100) и AnotherFilter в (1, 2) '

Я действительно хотел бы простое однострочное решение для этого. Что-то я пробовал, но безрезультатно:

SELECT REPLACE(@Input, 'BadFilter in (%%) and ', '')

Пример кода:

DECLARE @Input nvarchar(500) = 'GoodFilter in (2, 3, 100) and BadFilter in (11, 23, 24, 25) and AnotherFilter in (1, 2)'
DECLARE @DesiredOutput nvarchar(500) = 'GoodFilter in (2, 3, 100) and AnotherFilter in (1, 2)'
--do magic to remove BadFilter
--@Input == @DesiredOutput

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Вы можете использовать charindex и заменить на sql сервер

select left(@Input, charindex('BadFilter',@Input) - 1) + 
right(@Input, len(@Input) - charindex('AnotherFilter',@Input) + 1)
0 голосов
/ 09 марта 2020

С некоторой помощью zip у меня появилась другая идея. Я изменил @Input так, чтобы BadFilter всегда был последним в @Input. И тогда решение выглядит так:

DECLARE @Input nvarchar(500) = 'GoodFilter in (123,123,123) and AnotherFilter in (1,2,3,4) and BadFilter in (1,2,3)'
SELECT LEFT(@Input, CHARINDEX(' and BadFilter', @Input))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...