Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何获取输入参数中第二个哈希后的值_Sql_Sql Server_Tsql - Fatal编程技术网

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

我下面的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 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,因此我接受了另一个答案。对不起,我本来应该在问题中提到这个!