Вопрос:
В основном я пытаюсь заменить все в строке, находящейся в скобках.
Итак, например, строка ‘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;