我目前有一个表的结构如下:
customer_id name phoneNumbers
1 Adam [{'type':'home','number':'687-5309'} , {'type':'cell','number':'123-4567'}]
2 Bill [{'type':'home','number':'987-6543'}]
将phonenumbers列设置为json列类型。为了简单起见,我想把所有的json电话号码转换成一个新的单独的表。比如:
phone_id customer_id type number
1 1 home 687-5309
2 1 cell 123-4567
3 2 home 987-6543
似乎它应该可以用openjson实现,但到目前为止,我还没有找到正确声明它的方法。感谢您的帮助。
3条答案
按热度按时间ugmeyewa1#
你可以这样做:
诀窍是
(SELECT 0 as i union all SELECT 1)
,取决于json数组的长度,您可能需要添加更多索引。您可以通过以下方法找到最大长度:lsmd5eda2#
使用带1的递归cte,并递归到json\u长度。
然后使用concat在extract查询中传递该元素的\u id:
a11xaf1n3#
请根据mysql\maria版本更改cte定义语法。