就我个人而言,我更喜欢使用 STUFF
来执行此操作,而不是 RIGHT
。 这样您就不需要获取值的长度。 CHARINDEX
但您仍然需要获取角色的位置:
STUFF(YourColumn, 1, CHARINDEX('-',YourColumn),'')
因此,这将获取 的值 YourColumn
,然后 1
用零长度字符串 ( -
) YourColumn
字符位置 ''
。
如果您不想在字符不在字符串中时返回字符串,则可以添加 NULLIF
, 以将 0
更改 CHARINDEX
为 NULL
.
STUFF(YourColumn, 1, NULLIF(CHARINDEX('-',YourColumn),0),'')
工作示例:
SELECT V.YourColumn,
STUFF(YourColumn, 1, CHARINDEX('-',YourColumn),'') AS RemoveUpToDelimiter,
STUFF(YourColumn, 1, NULLIF(CHARINDEX('-',YourColumn),0),'') AS RemoveUpToDelimiter_NULLifNone
FROM (VALUES('ABC-123'),
('AB-424'),
('ABCD-53214'),
('789'))V(YourColumn);