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
Другие вопросы по тегам