SQL-запрос для замены / удаления части строки, которая имеет значение переменной, которая может находиться в любой части строки - PullRequest
0 голосов
/ 21 октября 2019

У меня есть поле, содержащее несколько параметров в виде одной строки

parameters = -start=0 -end=67 -median=12

Эти параметры могут быть в любом порядке или не существовать. Как я могу избавиться от одного из параметров, например. Медиана, и сохранить все остальные в строке?

Этот запрос заменяет параметр, но не значение переменной, которое следует после '='

UPDATE table
SET parameters = REPLACE(parameters,'-median=','')
where parameters LIKE '%median%'

Как мне обновить этот запрос дозаменить '-median =%'?

1 Ответ

0 голосов
/ 21 октября 2019

Я думаю, что это будет работать:

select params,
       (case when params like '% -median=%'
             then stuff(params, 
                        charindex(' -median', v.params),
                        charindex(' ', v.params + ' ', charindex('-median', v.params)) - charindex(' -median', v.params),
                        ''
                       )
              else params
       end)
from (values ('parameters = -start=0 -end=67 -median=12'),
             ('parameters = -start=0 -median=12  -end=67')
     ) v(params);

Здесь - пример в db <> fiddle.

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