Объединение нескольких OR в предложение WHERE с Node и DB2 - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать базовый компонент фильтрации, где пользователи будут выбирать производителей из списка для фильтрации.Любой из выбранных должен быть дополнительным ИЛИ в предложении WHERE в моем операторе SQL.Технический стек - это Vue и Node с DB2, работающей на AS / 400.

Я видел библиотеки, в которых можно создавать запросы, но ни одна из них не работает для db2.Какие варианты у меня есть здесь?Вот пример того, что я пытаюсь выполнить с помощью библиотеки Knex.js, которая не поддерживает DB2.

Knex.js - это конструктор SQL-запросов "с батарейками" для Postgres, MSSQL,MySQL, MariaDB, SQLite3, Oracle и Amazon Redshift

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 голосов
/ 09 июля 2019

Запрос, сгенерированный вашей библиотекой, синтаксически некорректен для Db2 - он использует обратные кавычки для кавычек идентификаторов, что не является стандартным и, насколько я знаю, используется только MySQL.Очевидно, библиотека изначально не поддерживает Db2, но вы можете попробовать настроить его для использования диалекта Postgres, который ближе к стандарту SQL и, как таковой, с большей вероятностью будет создавать операторы, понятные Db2.Еще лучше, как я предложил в комментарии, найти библиотеку, которая изначально поддерживает Db2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...