Заменить определенный шаблон в длинной строке в MS SQL, используя T-SQL - PullRequest
1 голос
/ 18 июля 2009

В моей базе данных MS SQL есть таблица, в которой в поле есть некоторые неполные данные. Данное поле является полем varchar и содержит около 1000 символов. Эта строка состоит из сегментации слов в формате прямой косой черты, за которой следует сегмент, а затем заканчивается прямой косой чертой (т. Е. / P /). Каждый из этих сегментов будет разделен пробелом. Проблема состоит в том, что некоторые из этих сегментаций не имеют последней косой черты (т.е. / p). Мне нужно написать скрипт T-SQL, который бы исправил эту проблему.

Я знаю, что для этого мне понадобится оператор обновления. Я тоже получил пункт где. Но проблема, которую я имею, состоит в том, что я устанавливаю это равным. Поскольку строка содержит около 1000 символов, я не хочу набирать фактическую строку и просто исправлять проблемную сегментацию. Мой вопрос заключается в том, существует ли «функция замены RegEx», которая бы изменяла только проблемные сегментации и оставляла остальную часть строки в одиночку?

Ваша помощь будет принята с благодарностью.

Заранее спасибо, Monte

Ответы [ 3 ]

1 голос
/ 18 июля 2009

Если у вас установлен Windows Scripting Host (на большинстве компьютеров это делается), вы можете использовать этот метод для вызова объекта VBScript.RegExp из T-SQL.

1 голос
/ 18 июля 2009

Есть ЗАМЕНА , но нет ничего похожего на RegEx.

Если это однократная операция, вы можете экспортировать таблицу, использовать знакомый вам инструмент, такой как sed или grep, а затем импортировать измененные данные обратно. Вероятно, это будет быстрее и правильнее, чем пытаться сделать это в T-SQL.

С другой стороны, если это плановая операция обслуживания, которую вам придется часто повторять в качестве способа обслуживания данных, то я согласен с mrdenny: функция CLR, вероятно, является лучшим выбором.

1 голос
/ 18 июля 2009

SQL не поддерживает RegEx внутри него. Вы можете написать функцию SQL CLR, затем передать данные через нее и, если есть проблема с исправлением данных, вернуть возвращенную исправленную версию в SQL.

UPDATE YourTable
    Set YourColumn = dbo.YourClrProc(YourColumn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...