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

标签 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 block 而不是 SELECT 语句来获得所需的结果?

最佳答案

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

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

关于sql - 如何在输入参数中的第二个哈希后获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47330163/

相关文章:

sql - 在父元素之后对子元素进行排序

sql - 获取最后 30 行

Sql Datetime 将数据类型 varchar 转换为 datetime 时抛出错误

mysql - 消息 7391 : linked server unable to begin a distributed transaction (both svrs running locally)

sql - 如何在 SQL 中引用自定义字段

mysql - SQL从有限制的2个表中选择

sql - 有一种方法可以查明我的行是已读已提交还是已读未提交?

tsql - Visual Studio认为正确的SQL语法不正确

sql - 如何从 [存储过程] 中选择 [临时表1] = [子选择 1]、[临时表2] = [子选择 2]

sql-server - 如何解析sql server中的xml以处理DateTime DataType中的NULL值