MSSQL - 删除' - '之后的所有文字。在varchar字段中

时间:2015-01-28 13:50:21

标签: sql sql-server varchar

我的一个表中有一个字段,其中包含名称,例如:
Category1 - Label1,
Category2 - Label2,
Category3 - Label3等等。

我创建了另一个字段,我想做一个将所有值复制到新字段的UPDATE,但它们显示为:
组别
产品组别
Category3

这意味着从连字符前面的空格中删除所有内容。

注意:字符串中只有一个连字符可以将Category与Label分开。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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