如何在输入参数中的第二个哈希值后获取值

时间:2017-11-16 12:52:02

标签: sql sql-server tsql

我的下面的t-sql仅在输入参数中有一个哈希符号时才有效。

如何更改它以便我可以在第二个哈希符号后得到值?

我想我需要使用REVERSERIGHT的组合,但我无法理解。

DECLARE @SEAL_SECURITY3 As Varchar(50); SET @SEAL_SECURITY3 = NULL;
DECLARE @SEAL_SECURITY As Varchar(50); SET @SEAL_SECURITY = 'MS-7#MS-8#MS-9'

SET @SEAL_SECURITY3 = CASE WHEN CHARINDEX('#', @SEAL_SECURITY) = 0 THEN NULL 
ELSE SUBSTRING(@SEAL_SECURITY, CHARINDEX('#', @SEAL_SECURITY) + 1, LEN(@SEAL_SECURITY) - CHARINDEX('#', @SEAL_SECURITY) + 1) 
END 

SELECT @SEAL_SECURITY3

结果是MS-8#MS-9

期望的结果是MS-9

更新

是否可以通过更改SET ELSE块而不是SELECT语句来获取所需结果?

2 个答案:

答案 0 :(得分:4)

如果您正在使用SQL SERVER并且在您的字符串中,#的计数总是小于等于4,那么在脚本下方将有助于获得所需的结果

SELECT PARSENAME(REPLACE(@SEAL_SECURITY,'#','.'),1)

答案 1 :(得分:2)

如果您在2012年之前使用SQL Server版本:

SELECT RIGHT(@SEAL_SECURITY, CHARINDEX('#', REVERSE(@SEAL_SECURITY))-1)