将字符串拆分为SQLServer中的列
我在拆分以下字符串时遇到了一些困难:
"greeting1": "hi", "greeting2": "hello", "greeting3": "hey"
...作为单独的列进入我想要的输出:
+------------+------------+-----------+
| greeting1 | greeting2 | greeting3 |
+------------+------------+-----------+
| hi | hello | hey |
+------------+------------+-----------+
仅供参考 - 我正在使用 SQL Server,问候的最大数量是五个,我知道我可以使用一个 STRING_SPLIT 函数,但我真的不知道如何使用它 - 还考虑了我的引号和冒号的数量细绳。任何反馈或建议都会非常有帮助!谢谢你。:)
回答
如果您使用的是 SQL Server 2016+,则可以使用OPENJSON()显式架构(WITH子句)将输入文本解析为 JSON 。如果问候的最大数量为 5,则需要使用适当的列定义:
DECLARE @text varchar(1000) = '"greeting1": "hi", "greeting2": "hello", "greeting3": "hey"'
SELECT *
FROM OPENJSON(CONCAT('{', @text, '}')) WITH (
greeting1 varchar(1000) '$.greeting1',
greeting2 varchar(1000) '$.greeting2',
greeting3 varchar(1000) '$.greeting3',
greeting4 varchar(1000) '$.greeting4',
greeting5 varchar(1000) '$.greeting5'
)
结果:
greeting1 greeting2 greeting3 greeting4 greeting5
-------------------------------------------------
hi hello hey
- In before the OP says "But I need to do this dynamically."