使用Node和DB2将多个OR链接到WHERE子句上

时间:2019-07-08 21:05:27

标签: sql node.js db2 ibm-midrange

我正在尝试构建一个基本的筛选组件,用户将在其中从列表中选择制造商进行筛选。选择的任何一个都必须是我的SQL语句中WHERE子句的附加OR。技术栈是在AS / 400上运行的带有DB2的Vue和Node。

我见过可以在其中构建查询的库,但是没有一个适用于db2。我在这里有什么选择?这是我要使用不支持DB2的Knex.js库完成的示例。

Knex.js是用于Postgres,MSSQL,MySQL,MariaDB,SQLite3,Oracle和Amazon Redshift的“包含电池” SQL查询生成器

knex('users').where(function() {
  this.where('id', 1).orWhere('id', '>', 10)
}).orWhere({name: 'Tester'})
Outputs:
select * from `users` where (`id` = 1 or `id` > 10) or (`name` = 'Tester')

1 个答案:

答案 0 :(得分:0)

由您的库生成的查询对于Db2在语法上是不正确的-据我所知,它使用反引号来引用标识符,这不是标准的,仅由MySQL使用。显然,该库本身不支持Db2,但是您可以尝试将其配置为使用Postgres方言,后者更接近SQL标准,因此更有可能产生Db2可以理解的语句。更好的是,正如我在评论中建议的那样,找到一个本机支持Db2的库。