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
我的一个表中有一个字段,其中包含以下名称:
类别 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