MSSQL - удалить весь текст после '-' в поле varchar
У меня есть поле в одной из моих таблиц с именами, такими как:
Категория1 - Метка1,
Категория 2 - Метка 2,
Категория 3 - Label3 и так далее.
Я создал другое поле и хочу выполнить ОБНОВЛЕНИЕ, которое скопирует все значения в новое поле, но они выглядят так:
Категория1
Категория2
Category3
Это будет означать удаление всего пространства из пробела перед дефисом справа.
Примечание. В строке будет только один дефис, чтобы отделить категорию от метки.
2 ответа
Решение
update your_table
set col_new = case when charindex('-', col) > 0
then RTRIM(left(col, charindex('-', col) - 1))
else col
end
Чтобы добиться того, что вы хотите, вы должны выбрать подстроку слева, используя CHARINDEX()
а также LEFT()
функция sql. Затем установите Обновить новое значение в новом столбце
UPDATE tblName
SET updatedColumn = CASE WHEN CHARINDEX('-', columnName) > 0 THEN
RTRIM(LEFT(columnName, CHARINDEX('-', columnName)-1))
ELSE columnName
END