代码之家  ›  专栏  ›  技术社区  ›  alwaysVBNET

从JSON列内的数组中获取行数据

  •  1
  • alwaysVBNET  · 技术社区  · 6 年前

    我有一张桌子 'Preference' 列存储JSON字符串。

    a) 我想拿到 type companytype . 在我试图 sqlfiddle

    SELECT z.[Type]
    FROM FinPreferences p
    CROSS APPLY OPENJSON(Preference,'$.companytype.type') WITH (
        [Type] INT
    ) z
    WHERE PreferenceID=1
    

    b) 如何将结果作为一个字符串

    1,2,3,4,5

    这是数据库中的数据 Preference

       {
        "companysize":{"min":0,"max":5},
        "distance":{"min":100,"max":200},
        "companytype":{"type":[1,2,3,4,5]},
        "budget":{"min":1000,"max":2000}
        }
    

    Fiddle is here

    1 回复  |  直到 6 年前
        1
  •  4
  •   Panagiotis Kanavos    6 年前

    要么移除 WITH 子句并使用 value 字段来检索数组的值,例如:

    SELECT z.value as Type
    FROM FinPreferences p
    CROSS APPLY OPENJSON(Preference,'$.companytype.type') z
    WHERE PreferenceID=1
    

    $ 条款:

    SELECT z.Type
    FROM FinPreferences p
    CROSS APPLY OPENJSON(Preference,'$.companytype.type') 
                WITH ( Type int '$') z
    WHERE PreferenceID=1
    

    应用于返回的结果 OPENJSON $.companytype.type 只是一个整数数组,它没有任何其他属性