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

在SQL SELECT多参数过滤时能否使用点导航访问嵌套字段?

问题

本人刚接触SQL,想要仅检索特定groupID的记录,使用了如下查询语句:

SELECT @Date, Capacity, UserOrUserGroup 
FROM UCTimePhaseMonthly 
WHERE Date >= 2023-05-01 
  AND UserOrUserGroup.id = '/User/fdwr6cs6msxapw5zh4bh5jj93'

返回的单条数据示例如下:

[
    {
        "id": "/UCTimePhaseMonthly/2z1r4vdk3d8qk16uegexx5rxx3453",
        "Date": "2023-06-01T00:00:00.0000000",
        "Capacity": {
            "unit": "Hours",
            "value": 176
        },
        "UserOrUserGroup": {
            "id": "/User/fdwr6cs6msxapw5zh4bh5jj93"
        }
    }    
]

请问当id字段嵌套在UserOrUserGroup中时,在SQL SELECT的多参数过滤(比较)操作里能否使用点导航?

回答

能不能用点导航访问嵌套字段,完全看你使用的数据库系统:

  • 标准SQL本身不支持这种直接的点语法,但不少现代数据库(比如PostgreSQL、SQL Server、MySQL 8.0及以上版本)针对JSON类型的嵌套字段,都提供了类似点导航的写法支持。
  • 从你的查询结果就能看出来,当前使用的数据库是支持UserOrUserGroup.id这种写法的——毕竟你的语句已经成功查出了目标数据,说明这个语法在你当前环境下是有效的。
  • 如果换用不支持这种写法的数据库,就得用对应的数据提取函数来获取嵌套值再做过滤,比如PostgreSQL用->>、SQL Server用JSON_VALUE等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:48:21