Sql 如何获取输入参数中第二个哈希后的值
我下面的t-sql仅在输入参数中有一个哈希符号时有效 如何将其更改为,以便获得第二个哈希符号后的值 我想我需要结合使用Sql 如何获取输入参数中第二个哈希后的值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我下面的t-sql仅在输入参数中有一个哈希符号时有效 如何将其更改为,以便获得第二个哈希符号后的值 我想我需要结合使用反向和右侧,但我想不出来 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
反向
和右侧
,但我想不出来
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
语句来获得所需的结果 如果您正在使用SQL SERVER,并且在字符串中,#
的计数总是小于等于4,那么下面的脚本将有助于获得所需的结果
SELECT PARSENAME(REPLACE(@SEAL_SECURITY,'#','.'),1)
如果您使用的是2012年之前的SQL Server版本:
SELECT RIGHT(@SEAL_SECURITY, CHARINDEX('#', REVERSE(@SEAL_SECURITY))-1)
编辑您的问题并提供示例数据和所需结果。多个示例可能会有所帮助。您到底想要实现什么?问题更新了此功能,但是否可以通过更改SET ELSE块而不是SELECT语句来获得相同的结果?是的,只需将ELSE部分替换为
PARSENAME(替换(@SEAL_SECURITY,'.'安全性,'.',')),1)
谢谢您的帮助。我使用的是Sql Server 2014,因此我接受了另一个答案。对不起,我本来应该在问题中提到这个!