У меня есть table A
, который содержит текстовый столбец. В моем сохраненном proc у меня есть временная таблица, содержащая два значения столбца и новое значение, имеющее количество строк. Мне нужно заменить все вхождения старых значений новыми значениями, указанными в таблице temp, в текстовом столбце в моем table A
.SQL: Заменить текстовое значение в столбце, используя старые значения из другой таблицы
Текстовое поле в таблице A не совпадает со значением oldvalue в таблице temp, поэтому я не могу использовать соединение. Значение текстового столбца может быть «там ничего нет». Там может быть строка в таблице temp со значением oldvalue = 'there' и newvalue = 'here'. Наконец, значение столбца должно быть заменено на «здесь ничего здесь». Это должно применяться ко всем строкам столбца в table A
.
Один из вариантов - перебирать временную таблицу (не предпочтительнее). Есть ли лучший/элегантный/оптимизированный способ сделать это?
Примеры данных могут помочь. Вы имеете в виду, что таблица temp содержит, например, «(старый, новый) (собака, волк), (коричневый, черный)», и вы хотите обновить строку «быстрая коричневая лиса перепрыгнула через ленивую собаку» в «быстрый черный волк перепрыгнул через ленивую собаку "? –
@MartinSmith - Точно. – ubaid
Возможный дубликат [Заменить часть строки с капитализированным эквивалентом из таблицы перекрестных ссылок - tsql] (http://stackoverflow.com/questions/13918473/replace-part-of-string-with-capitalised-equivalent-from-cross -ref-temp-table-t) –