Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向从sql派生的值添加前缀_Sql_Sql Server - Fatal编程技术网

向从sql派生的值添加前缀

向从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-

我有一些JSON数据,由于提取它的系统上的一个怪癖,它为同一项发布了两个值。例如:

[
   {
      "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