【发布时间】:2021-06-08 16:55:21
【问题描述】:
我有 ports_list 表,下面有 ports 列:
| ports | intended_output |
|---|---|
| "[{\"id\":193,\"name\":\"PORT C\"}]" | PORT C |
| "[{\"id\":204,\"name\":\"PORT D\"}]" | PORT D |
| "[{\"id\":45,\"name\":\"PORT I\"},{\"id\":193,\"name\":\"PORT C\"},{\"id\":204,\"name\":\"PORT D\"},{\"id\":271,\"name\":\"PORT G\"}]" | PORT I, PORT C, PORT D, PORT G |
当一行中只有一个端口值时,我使用这种方法并以某种方式设法获得了结果,不幸的是它无法连续满足多个端口值:
select ports,
REPLACE( substring(ports, CHARINDEX('"name\":\', ports, 1)+10, LEN(ports)-10),
'\"}]"',
''
)
from ports_list
| ports | output |
|---|---|
| "[{\"id\":193,\"name\":\"PORT C\"}]" | PORT C |
| "[{\"id\":204,\"name\":\"PORT D\"}]" | PORT D |
| "[{\"id\":45,\"name\":\"PORT I\"},{\"id\":193,\"name\":\"PORT C\"},{\"id\":204,\"name\":\"PORT D\"},{\"id\":271,\"name\":\"PORT G\"}]" | PORT I"},{"id":193,"name":"PORT C"},{"id":204,"name":"PORT D"},{"id":271,"name":"PORT G"}]" |
有人可以帮我按照第一个表获得预期的输出吗?
【问题讨论】:
-
你的关系型数据库是什么?部分支持 JSON
-
编写自定义函数。你用什么数据库?你用什么语言编码?添加这些标签。
-
我使用 Microsoft sql server。添加了标签。
-
您的 SQL Server 版本是多少?
-
这是我的版本 Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) @Zhorov
标签: sql sql-server string substring