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

Couchbase预准备语句(Prepared Statement)正确语法及参数问题

解决Couchbase 7.1预准备语句动态指定列名的问题

你的问题出在N1QL对参数的默认处理逻辑:普通的$column会被当作字面量字符串,而非列名标识符。所以原查询实际等价于SELECT DISTINCT 'Name' FROM bucket_name;,自然只返回传入的列名字符串。

下面是两种正确的实现方式:

方式1:使用标识符参数化

通过${column}语法将参数解析为列名标识符,直接引用对应字段:

PREPARE index_1 AS SELECT DISTINCT `${column}` FROM bucket_name;
EXECUTE index_1 USING {'column': 'Name'};

方式2:使用OBJECT_GET函数

通过函数动态提取文档中的指定字段值,兼容性更强:

PREPARE index_1 AS SELECT DISTINCT OBJECT_GET(b, $column) FROM bucket_name AS b;
EXECUTE index_1 USING {'column': 'Name'};

两种方式都能实现和SELECT DISTINCT Name FROM bucket_name完全一致的效果,返回指定列的去重值数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:45:46