MSSQL - 删除 varchar 字段中“-”后的所有文本

MSSQL - Remove all text after a '-' in a varchar field

我的一个表中有一个字段,其中包含以下名称:
类别 1 - 标签 1,
类别 2 - 标签 2,
Category3 - Label3 等等。

我创建了另一个字段,我想执行更新,将所有值复制到新字段,但它们显示为:
类别 1
类别 2
类别 3

这意味着从 space 连字符之前的右侧删除所有内容。

注意:字符串中永远只有一个连字符来将类别与标签分开。

update your_table
set col_new = case when charindex('-', col) > 0 
                   then RTRIM(left(col, charindex('-', col) - 1))
                   else col
              end

要实现您想要的效果,您必须使用 CHARINDEX()LEFT() sql 函数从左侧 select 子字符串。然后在新列中设置更新新值

UPDATE tblName
SET updatedColumn = CASE WHEN CHARINDEX('-', columnName) > 0 THEN
                         RTRIM(LEFT(columnName, CHARINDEX('-', columnName)-1))
                    ELSE columnName
                    END