Как заменить общие слова в столбце sql - PullRequest
2 голосов
/ 22 октября 2010

У меня есть таблица общих слов, которые используются в предложениях (например, A, the, и, где и т. Д.)

Что я хочу сделать, это перебрать все эти слова и убрать ихиз описаний, которые ввели люди, чтобы попытаться создать общие ключевые слова или теги.Но я не могу использовать замену, потому что замена удалит любой экземпляр общего слова, независимо от того, составляют ли это слово только пару букв.Например:

Я хочу заменить A в описании.Теперь, очевидно, много слов содержат букву а.Так что все эти А будут лишены слов.Я не хочу этогоЯ только хочу, когда A используется целое слово.Я могу понять это с помощью регулярных выражений, но мне было интересно, было ли в любом случае сделать это в SQL, не прибегая к CLR proc.

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

Ответы [ 3 ]

0 голосов
/ 26 октября 2010

Вы можете попробовать вложить замены для каждого слова, которое вы хотите заменить.Например:

UPDATE TableName
SET ColumnName = REPLACE(REPLACE(REPLACE(REPLACE(TableName.ColumnName,' a ',' '),' the ',' '),' and ',' '), '  ', ' ')

Дайте мне знать, если это то, что вы искали.

0 голосов
/ 31 октября 2010

Вот как я сделал нечто похожее на то, что вы пытаетесь сделать.

Во время действия замены ...
Добавьте пробел до и после общего слова.
Добавьте пробел до и после описания.

Предположим, выхотите удалить CommonWord «A» из описания.

Описание: «Хорошая фраза никогда не начинается с A и не заканчивается на A»
CommonWord: «A»

Обновить имя таблицы
Установить описание =
LTRIM (RTRIM (Заменить ('' + Описание + '', '' + CommonWord + '', '')))

Это позволяет вам удалить все целые слова, которые равны'A'.Поскольку вы заменяете «A» пробелом, вам нужно LTRIM RTRIM, чтобы удалить пробелы в начале или в конце.

Вы также можете сделать это в два шага:

-
-- Шаг 1 Прокрутите все распространенные слова, удалив их
-
Обновить имя таблицы
Установить Описание = Заменить ('' + Описание + '', '' + CommonWord + '', '')

-
- Шаг 2 Безоговорочно обрезать все описания
-
Обновить имя таблицы
Установить описание = LTRIM (RTIM (описание))

0 голосов
/ 22 октября 2010

Для простоты и непринужденности я использовал разные функции SQL PATINDEX, LEFT, RIGHT и LIKE, чтобы делать подобные вещи.Для одноразовой подготовки данных я экспортирую в что-то вроде Excel и схожу с ним.

Хороший подход также состоит в создании новой StringSubstitutionTable с двумя столбцами SOURCESTRING и TARGETSTRING и запуске функции замены, чтобы заменить SOURCESTRING наTARGETSTRING на объединенном столе.Это круто, потому что вы можете просто добавлять записи подстановки по мере необходимости.

...