You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何补全SQL查询以仅筛选category值为xyz的记录

修改方案

直接在查询末尾新增WHERE子句,匹配JSON路径提取出的category值即可。注意SQL执行顺序中WHERE子句早于SELECT计算,不能直接引用SELECT中定义的Value_reported别名。

最简修改版(直接追加筛选条件)

SELECT
    JSON_VALUE(doc, '$.category' ) AS Value_reported
FROM
    OPENROWSET(BULK 'https://azdevstoreforlogs.blob.core.windows.net/inews/resourceId=/SUBSCRIPTIONS/531B20C3AEB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h=13/m=00/PT1H.json',
               FORMAT = 'csv',
               FIELDTERMINATOR ='0x0b',
               FIELDQUOTE = '0x0b') 
        WITH (doc nvarchar(max)) AS rows
WHERE
    JSON_VALUE(doc, '$.category') = 'xyz'

可读性优化版(CTE包装,支持别名筛选)

如果后续需要提取更多JSON字段做筛选、聚合,建议用CTE先统一完成字段解析,外层再做筛选,避免重复书写JSON_VALUE逻辑:

WITH ParsedLogs AS (
    SELECT
        JSON_VALUE(doc, '$.category' ) AS Value_reported
        -- 可在此处新增其他需要提取的JSON字段
    FROM
        OPENROWSET(BULK 'https://azdevstoreforlogs.blob.core.windows.net/inews/resourceId=/SUBSCRIPTIONS/531B20C3AEB/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=05/d=23/h=13/m=00/PT1H.json',
                   FORMAT = 'csv',
                   FIELDTERMINATOR ='0x0b',
                   FIELDQUOTE = '0x0b') 
            WITH (doc nvarchar(max)) AS rows
)
SELECT Value_reported
FROM ParsedLogs
WHERE Value_reported = 'xyz'

两种写法执行性能无差异,SQL Server查询优化器会自动完成谓词下推,不会出现全量加载数据后再筛选的性能问题。

内容的提问来源于stack exchange,提问作者ZZZSharePoint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:21:39