【发布时间】:2020-09-23 04:04:10
【问题描述】:
我有一个存储过程,它接受我使用来自 OPENJSON() 的数据插入的 JSON 字符串。
我的 json 字符串包含一个对象,其中包含一个字符串数组。
目前,我正在将 prop2 的原始 json 写入我的表格,但我正在寻找使用逗号分隔符连接 prop2 中的字符串并将其写入表格的方法。所以保存到 prop2 列的值是 'val1,val2'。
实现这一目标的最佳方法是什么?
我目前正在使用的一些样板:
DECLARE @json NVARCHAR(MAX) = N'
{
"value" : [
{
"prop1" : "val",
"prop2" : ["val1","val2"]
}
]
}'
INSERT INTO dbo.mytable (prop1, prop2)
SELECT prop1, prop2
FROM OPENJSON (@json, '$.value')
WITH (
[prop1] [nvarchar](256) '$.prop1',
[prop2] [nvarchar](256) '$.prop2' AS JSON
)
谢谢!
【问题讨论】:
-
"所以保存到 prop2 列的值将是 'val1,val2'。" 不要。以规范化格式存储您的数据。
'val1,val2'没有标准化。 -
我明白但不在乎。它需要被连接起来。
-
“我明白但不在乎”你应该在乎。存储分隔数据只会让事情变得更难,而不是更容易。实际上,最好将 JSON 或 XML 数据存储在分隔数据上。
-
@Larnu 我需要分隔数据。我理解你的推理,但在这种情况下,我不关心最佳实践。
标签: sql json sql-server tsql