Как сделать запрос сопоставления с образцом в node-oracledb - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь выполнить простой запрос с сопоставлением с шаблоном, используя LIKE в предложении WHERE, используя node-oracledb NodeJS library , однако я не могу понять, как сделай это. Кажется, это не работает

const baseQuery = 
 `select item, item_desc
    from item_master
   where item_level=tran_level
     and item like '%:item%'`;

const binds = { item: '550' };
const result = await conn.execute(baseQuery, binds, {});

Он продолжает выдавать ошибку ниже -

[Error: ORA-01036: illegal variable name/number] {
  errorNum: 1036,
  offset: 0
}

Я прочитал документацию по node-oracledb, но этот, казалось бы, простой пример использования сопоставления с образцом запросы нигде не документированы. Поддерживается ли сопоставление с образцом? если да, то что я делаю не так?

1 Ответ

1 голос
/ 12 января 2020

В ответе на ваш кросс-пост ответили https://github.com/oracle/node-oracledb/issues/1195

Используйте в операторе SQL обычную переменную связывания (что важно для масштабируемости и безопасности, так что данные никогда не рассматривается как часть оператора SQL). Затем объедините любой синтаксис сопоставления с образцом, который вы хотите к данным.

Чтобы процитировать ответ sla100 в выпуске GitHub:

SQL:

and item like :item

JS:

const binds = { item: '%550%' };

Вы можете сделать это с помощью сравнений LIKE, а также REGEXP_LIKE. В документации по node-oracledb также есть примеры этого в WHERE IN.

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