Команда SQL Replace с подстановочными знаками

Вопрос:В основном я пытаюсь заменить все в строке, находящейся в скобках. Итак, например, строка '123 [1abc] abc' станет "123 [xx] abc ' select replace(string,'[%]','[xx]') as string2 from table1 Кроме того, что это не сработает. Значения в скобках всегда разные, и просто невозможно найти все индивидуальные возможности. Кроме того, некоторые из значений в скобках также отображаются

Вопрос:

В основном я пытаюсь заменить все в строке, находящейся в скобках.

Итак, например, строка ‘123 [1abc] abc’ станет “123 [xx] abc ‘

select replace(string,'[%]’,'[xx]’) as string2 from table1

Кроме того, что это не сработает.

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

Я работаю в Microsoft SQL Server, если это имеет значение.

Ответ №1

Предполагая, что существует только одно такое выражение, и квадратные скобки появляются только один раз, вы можете использовать stuff() для построения строки:

select stuff(str, charindex(‘[‘, str) + 1, charindex(‘]’, str) — charindex(‘[‘, str) — 1, ‘xx’) Ответ №2

Вы можете сделать это с помощью строковых манипуляций. Возьмите левую часть строки до левой скобки, добавьте “xx”, а затем добавьте правую сторону, начиная с правой скобки.

SELECT LEFT(string, CHARINDEX(‘[‘, string)) + ‘xx’ + RIGHT(string, LEN(string) — CHARINDEX(‘]’, string) + 1) AS string2 FROM table1;

Оцените статью
Добавить комментарий