簡體   English   中英

從 JSON 文本字段中提取值以用於“IN”語句 SQL

[英]Extract values from JSON text field for use in "IN" statement SQL

在 Azure SQL 服務器。 我有以下(非功能性)查詢,它試圖使用 JSON 外鍵數組中的值來查找行,使用“IN”。

SELECT * FROM foo_table WHERE foo_table_id IN (SELECT json_ids_field FROM bar_table WHERE bar_table_id _field= 1);

但是,這會返回一個錯誤,因為它本身並不理解 json_ids_field 中的json_ids_field格式。

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '[29,56,57,71,138,145,195]' to data type int

我如何反序列化該字段,以便將其值聚合到可在 IN 子句中使用的列表中。

如評論中所述,您需要使用OPENJSON來消費您的 JSON 並將其轉換為數據集:

SELECT *
FROM dbo.foo_table
WHERE foo_table_id IN (SELECT TRY_CONVERT(int, OJ.value)
                       FROM dbo.bar_table bt
                            CROSS APPLY OPENJSON(bt.json_ids_column) OJ
                       WHERE bt.bar_table_id_column = 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM