如何获取SQL列中数组的第一个元素?
我有一个SQL列(名为COL),其文本类型和值格式为多个数组(多维)的矩阵,格式如下:如何获取SQL列中数组的第一个元素?,sql,arrays,Sql,Arrays,我有一个SQL列(名为COL),其文本类型和值格式为多个数组(多维)的矩阵,格式如下: 在我的例子中,我有以下示例(为此,我仅使用了2个维度): 如何获取每个数组的“LineId”元素。所以,我的结果应该是这样的: | ID | COL | --------------------------------- | 1 | "LineId":701,"LineId":700 | 在“提取”上述元素后,我们如何再次从中提取数字,如下所示: | ID |
在我的例子中,我有以下示例(为此,我仅使用了2个维度):
如何获取每个数组的“LineId”元素。所以,我的结果应该是这样的:
| ID | COL |
---------------------------------
| 1 | "LineId":701,"LineId":700 |
在“提取”上述元素后,我们如何再次从中提取数字,如下所示:
| ID | COL |
----------------
| 1 | 700,701 |
对于SQL Server,我希望在字符串函数的帮助下使用xml
节点方法(即substring()
,charindex()
,等等)
对于SQL Server,我希望在字符串函数的帮助下使用xml
节点方法(即substring()
,charindex()
,等等)
您使用什么类型的DBMS?您想要查询还是使用java?您是否可以选择重新创建表,这样就不会在列中存储数组?您使用什么类型的DBMS?您想要查询还是使用java?您是否可以选择重新创建表,这样就不会在列中存储数组?非常感谢。这个版本的查询正是我需要的。非常感谢。这个版本的查询正是我所需要的。
| ID | COL |
----------------
| 1 | 700,701 |
;with cte as
(
select
m.id, a.value('.', 'nvarchar(max)') [col] from
(
SELECT ID, CAST('<m>'+REPLACE(CAST(COL as nvarchar(max)), ',', '</m><m>')+'</m>' as xml) as [col] FROM <table>
) m cross apply col.nodes ('/m') as split(a) where a.value('.', 'nvarchar(max)') like '%LineId%'
), cte1 as
(
select id, REVERSE(SUBSTRING(REVERSE(col), 1, CHARINDEX(':', REVERSE(col))-1)) [col] from cte
)
select
id,
col = STUFF(
(select ','+[col] from cte1 where id = c1.id ORDER BY [col] for xml path('')),
1,1,''
)
from cte1 c1 group by c1.id
id col
1 700, 701