我已经将数据输入到我的 SQL 服务器中。我想删除连字符前的所有字符。\'-\' 之前的字符数量不同。例如:ABC-123AB-424ABCD-53214 我...
我已经将数据输入到 SQL 服务器中。我想删除连字符前的所有字符。\'-\' 之前的字符数量不同。
例如:
ABC-123
AB-424
ABCD-53214
我想要这样的结果:
123
424
53214
我是 SQL Server 新手,确实需要帮助。
先感谢您。
就我个人而言,我更喜欢使用 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);