向从sql派生的值添加前缀
我有一些JSON数据,由于提取它的系统上的一个怪癖,它为同一项发布了两个值。例如:向从sql派生的值添加前缀,sql,sql-server,Sql,Sql Server,我有一些JSON数据,由于提取它的系统上的一个怪癖,它为同一项发布了两个值。例如: [ { "data":{ "ecfa663b-3dd2-4aef-b25c-e43dd6b82enbRA004":"0001-01-01T00:00:00+00:00", "ecfa663b-3dd2-4aef-b25c-e43dd6b82enbRA013":"0001-
[
{
"data":{
"ecfa663b-3dd2-4aef-b25c-e43dd6b82enbRA004":"0001-01-01T00:00:00+00:00",
"ecfa663b-3dd2-4aef-b25c-e43dd6b82enbRA013":"0001-01-01T00:00:00+00:00",
"ecfa663b-3dd2-4aef-b25c-e43dd6b82enbMRA013":"2020-09-21T18:15:36.4919022+01:00",
"ecfa663b-3dd2-4aef-b25c-e43dd6b82enbRA010":"2020-09-21T18:12:35.4119042+01:00",
"ecfa663b-3dd2-4aef-b25c-e43dd6b82enbMRA004":"2020-09-21T00:00:00+01:00"
},
"columns":[
{
"name":"Assessment One",
"keySegment":"RA004",
"mandatory":"true"
},
{
"name":"Assessment Two",
"keySegment":"RA013",
"mandatory":"true"
},
{
"name":"Assessment Three",
"keySegment":"RA010",
"mandatory":"false"
}
]
}
]
RA004和RA013是正确的,但软件系统将其归类为强制性评估,因此在个人标识符(较长的数字)中添加了“M”前缀
我将此JSON提取到SQL Server中的代码(可能不是很有效)如下所示:
BEGIN TRY
SELECT
LEFT(x.[Key],36) AS "ConnectionID",
y.name AS "Assessment", left(x.[Value],19) as "ReviewDate"
INTO [AssessmentToolsStatus]
FROM OPENJSON(@JSON, '$[0].data') AS x
CROSS APPLY
OPENJSON(@JSON, '$[0].columns')
WITH
(
name nvarchar(50) '$.name',
keySegment nvarchar(10) '$.keySegment',
mandatory nvarchar(10) '$.mandatory'
) y
WHERE REPLACE(x.[Key], Left(x.[Key],36),'') = y.keySegment
然而,我不确定如何解释“MRA”。我想要类似“如果‘RA004’、‘RA013’)中的keySegment,那么keySegment=‘M’+keySegment”这样的东西,但我不太知道如何在SQL中使用。我不需要RA004、RA013条目,因为日期戳没有意义
有人能帮忙吗?
谢谢如果我正确理解了这个问题,一个可能的解决方案是下面的陈述(我假设
RA004
和RA013
是$中的项目。列
JSON数组带有$。强制
等于“true”
):
结果:
ConnectionID Assessment ReviewDate
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment One 2020-09-21T00:00:00
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment Two 2020-09-21T18:15:36
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment Three 2020-09-21T18:12:35
您使用的是哪种数据库管理系统?(可能是SQLServer女士?)对不起!!对SQLServer。我确实添加了标签,但没有在帖子中提及。更正并再次表示歉意。我为您添加了sql server标记(“sql”是一个非常通用的标记,意味着涉及到sql的某些版本,或者可能是关于sql的通用q,没有暗示特定版本)谢谢。我通常会使用sql server,但由于某些原因,我错过了服务器部分。。。
ConnectionID Assessment ReviewDate
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment One 2020-09-21T00:00:00
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment Two 2020-09-21T18:15:36
ecfa663b-3dd2-4aef-b25c-e43dd6b82enb Assessment Three 2020-09-21T18:12:35