sql - 如何提取两个字符之间的字符串
问题描述
情况:
我有一个从 Hex 解码为 varchar 的列,其中值如下所示:
{"something":"example"}
客观的:
我想提取引号之间的第二个单词。
我尝试了什么:
我从几个substring
andcharindex
函数开始,但我的代码看起来比它应该的更复杂。
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))
)
有任何想法吗?
解决方案
如果您使用的是 SQL Server 2016+,则可以使用OPENJSON
:
SELECT [value]
FROM OPENJSON('{"something":"example"}');
所以对着一张桌子:
SELECT [value]
FROM (VALUES('{"something":"example"}'),
('{"another":"sample"}'))V(S)
CROSS APPLY OPENJSON(V.S);
这将返回:
value
-------
example
sample
推荐阅读
- python - 在数据框中添加具有今天日期的列,例如 Excel 中的 TODAY 函数
- haskell - 为什么 ghci 找不到我要编译的 hs 文件?
- python - Python列表理解 - 直接返回大列表比存储更快,然后返回
- laravel - 在 Laravel 和 Livewire 中将数据存储在多个数据透视表中
- bash - dmesg 记录到文件,并检查行数
- angular - 角度 agm-map 如何让用户放置标记
- django - 对非常大的数据库进行更快的 Django 过滤器查询
- html - 嵌入的 TTF 字体在 Chrome 中工作正常,在 Firefox 中不起作用
- ios - 在 iOS 15 中以编程方式启用焦点模式
- oracle-apex - 如何在 Oracle APEX 中插入和更新插入的行?