GridDB Node.js Driver布尔类型列过滤异常问题求助
问题原因及解决方案
错误提示[150012:TQ_COLUMN_NOT_FOUND] No such column true说明Node.js端的SQL解析逻辑没把小写的true识别为布尔常量,反而将其当作列名处理——这是因为不同客户端对SQL布尔常量的语法兼容度有差异:gs_client能识别小写布尔值,但你用的Node.js驱动对布尔常量的格式要求更严格。
你可以用以下几种方式解决:
改用大写布尔常量:
将查询语句中的true改为TRUE,驱动就能正确识别为布尔常量:time_in_zone.query("SELECT * where dstActive = TRUE")用数值替代布尔值:
由于TDengine的布尔类型底层用1(代表true)和0(代表false)存储,直接用数值查询也能生效:time_in_zone.query("SELECT * where dstActive = 1")使用参数化查询(推荐):
参数化查询不仅能避免这类语法兼容问题,还能防止SQL注入。以TDengine官方Node.js驱动为例,写法如下:time_in_zone.query("SELECT * where dstActive = ?", [true])
如果要统计当前实行夏令时的时区数量,直接把查询语句改成统计语句即可,比如:
time_in_zone.query("SELECT COUNT(*) as dst_count from Time_In_Zone where dstActive = TRUE")
内容的提问来源于stack exchange,提问作者Jonathan Pitter
相关产品推荐
相关产品推荐

