我的下面的t-sql仅在输入参数中有一个哈希符号时才有效。
如何更改它以便我可以在第二个哈希符号后得到值?
我想我需要使用REVERSE
和RIGHT
的组合,但我无法理解。
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
语句来获取所需结果?
答案 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)