【发布时间】:2018-07-20 14:53:10
【问题描述】:
我有一列包含由“,”分隔的多个值,还包括由“:”分隔的标题。 该列如下所示:
{"Id":"c7d45d60-cf90-490d-be4c-f04c9349da03","RecordType":20,"CreationTime":"2018-06-12T21:48:30","Operation":"DownloadReport","OrganizationId":"dabd5d90-87c2-44c9-93cd-783e03236e40","UserType":0,"UserKey":"10033FFF85612C0C","Workload":"PowerBI","UserId":"xxxxxx@grundfos.com","ClientIP":"xxx.3.xx.111","UserAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/66.0.3359.181 Safari\/537.36","Activity":"DownloadReport","ItemName":"My Salesresponsibility Final 12-06-2018","WorkSpaceName":"My Sales Dashboard testing environment","DatasetName":"My Salesresponsibility Final 12-06-2018","ReportName":"My Salesresponsibility Final 12-06-2018","CapacityId":"65CB790D-16C8-4DA6-BFA2-89854100423E","CapacityName":"Hope","WorkspaceId":"34812eed-830a-43b2-ae18-6c5c1c0c92a1","ObjectId":"My Salesresponsibility Final 12-06-2018","DatasetId":"b6184b73-fea2-4244-83ca-328e89c536af","ReportId":"36e6b6c5-ceeb-4d02-9d54-fb820634e839","IsSuccess":true,"DatapoolRefreshScheduleType":"None"}
有没有办法将这些值及其标题拆分为单独的列? 因此第一列将命名为“Id”并包含值“c7d45d60-cf90-490d-be4c-f04c9349da03”等等。 我已经尝试遵循这个类似问题的最受好评的解决方案,但它似乎不起作用: How to split a comma-separated value to columns
所以我想从这里开始:
这样的:
我尝试过使用这段代码,但确实效果不佳:
SELECT [AuditData]
,Substring(AuditData, 1,Charindex(',', AuditData)-1) as Id
,Substring(AuditData, Charindex(',', AuditData)+1, LEN(AuditData)) as RecordType
,Substring(AuditData, Charindex(',', AuditData)+2, LEN(AuditData)) as CreationTime
FROM [dbo].[Log]
【问题讨论】:
-
包含您一直在尝试但似乎不起作用的代码?
-
我不认为我可以使用 JSON 函数? Microsoft SQL Azure (RTM) - 2018 年 6 月 8 日 12.0.2000.8 18:18:54 版权所有 (C) 2018 Microsoft Corporation
-
JSOn 函数在 Azure 中可用。您是否尝试过以下@shnugo 答案?
-
是的,它似乎有效。我只需要弄清楚如何在作为列中的键和作为这些列中的值的值中进行透视。
标签: tsql