情况:
我有一列从十六进制解码为varchar,其中值看起来像这样:
{"something":"example"}
Run Code Online (Sandbox Code Playgroud)
目的:
我想提取引号之间的第二个单词。
我试过的
我从几个substring和charindex函数开始,但是我的代码看起来比应该的复杂。
SELECT SUBSTRING(
SUBSTRING(
'{"something":"example"}',
charindex(':"','{"something":"example"}')+2,
LEN('{"something":"example"}')-charindex(':"','{"something":"example"}')+2),
0,
CHARINDEX('"',SUBSTRING(
'{"something":"example"}',
charindex(':"','{"something":"example"}')+2,
LEN('{"something":"example"}')-charindex(':"','{"something":"example"}')+2))
)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
如果您使用的是SQL Server 2016+,则可以使用OPENJSON:
SELECT [value]
FROM OPENJSON('{"something":"example"}');
Run Code Online (Sandbox Code Playgroud)
所以对一个表:
SELECT [value]
FROM (VALUES('{"something":"example"}'),
('{"another":"sample"}'))V(S)
CROSS APPLY OPENJSON(V.S);
Run Code Online (Sandbox Code Playgroud)
返回:
value
-------
example
sample
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |