从字符串中获取特定值
Get a particular value from String
我想从我的字符串中删除特定值。我的字符串可以是任意长度。例如
字符串 1:
{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","SD":1,"TE":23}
字符串 2:
{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}
结果我想要这个23。我怎样才能在 SQL Server 2014 中得到这个?
使用JSON_VALUE函数:
(不幸的是自 2016 年以来可用)
解决方案:
DECLARE @str VARCHAR(MAX) = '{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}'
,@posA INT = 0
,@posB INT = 0
,@res VARCHAR(MAX) = ''
SET @posA = PATINDEX('%"TE":%}', @str) +5;
SET @posB = CHARINDEX('}', @str, @posA+1);
SET @res = SUBSTRING (@str ,@posA, @posB-@posA )
SELECT @res AS 'STR_res', CAST(@res AS INT) AS 'INT_res'
DECLARE @string VARCHAR(500) = '{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}'
SET @string = REVERSE(@string)
SELECT REVERSE(
SUBSTRING(@string,2,CHARINDEX(':',@string)-1-1)
) --return: 23
我想从我的字符串中删除特定值。我的字符串可以是任意长度。例如
字符串 1:
{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","SD":1,"TE":23}
字符串 2:
{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}
结果我想要这个23。我怎样才能在 SQL Server 2014 中得到这个?
使用JSON_VALUE函数:
(不幸的是自 2016 年以来可用)
解决方案:
DECLARE @str VARCHAR(MAX) = '{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}'
,@posA INT = 0
,@posB INT = 0
,@res VARCHAR(MAX) = ''
SET @posA = PATINDEX('%"TE":%}', @str) +5;
SET @posB = CHARINDEX('}', @str, @posA+1);
SET @res = SUBSTRING (@str ,@posA, @posB-@posA )
SELECT @res AS 'STR_res', CAST(@res AS INT) AS 'INT_res'
DECLARE @string VARCHAR(500) = '{"ABC":1,"ABC_DT":-1,"ABC_DBQty":0,"ABC_DSQty":0,"ABC_LMT":1,"ABC_DT":-1,"CTSD":"TEST","TE":23}'
SET @string = REVERSE(@string)
SELECT REVERSE(
SUBSTRING(@string,2,CHARINDEX(':',@string)-1-1)
) --return: 23