Не удается создать oracle регулярное выражение с использованием knex - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь создать ограничение с помощью регулярного выражения, используя knex в базе данных oracle. Knex создает ограничение для столбца oracle, но заменяет «?» с заполнителем типа ": 1", ": 2". Я пытался заменить знак вопроса (согласно документации) на «\?». Это не работает для меня на oracle дБ. Вот пример oracle ограничение столбца

 knex.raw('ALTER TABLE atest ADD CONSTRAINT C_TEST CHECK (REGEXP_LIKE(COL_A, \'^((([A]{0,4})WW)|(W{0,2}))\\?([B]{5}WW)+((([C]{5})W\\?))$\'))');

1 Ответ

0 голосов
/ 23 апреля 2020

Поздравляем! Похоже, вы нашли ошибку в knex (https://runkit.com/embed/qlo6re5ixn4s). Странно, что тесты не поймали этого. Пожалуйста, откройте отчет об ошибке в gnexub knex.

Хотя, если база данных принимает привязки значений в этой позиции запроса, вы можете попробовать это:

knex.raw(
  'ALTER TABLE atest ADD CONSTRAINT C_TEST CHECK (REGEXP_LIKE(COL_A, ?))', 
  ['^((([A]{0,4})WW)|(W{0,2}))?([B]{5}WW)+((([C]{5})W?))$']
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...