Python-запрос для Oracle - PullRequest
       2

Python-запрос для Oracle

0 голосов
/ 25 октября 2018

Я выполняю запрос со следующим фрагментом:

... WHERE SOME_RECORD_ID = :1 AND SOME_USER_ID = :2 .... и т. Д.

Проблема в том, что :2 может быть Python None (OracleNULL) и условие

SOME_USER_ID = NULL будет ложным, даже если SOME_USER_ID действительно равен NULL в таблице ORACLE.

Я хочу изменить запрос так, что если :2 в None(или Null), тогда запрос должен вести себя как

WHERE SOME_RECORD_ID = :1 AND SOME_USER_ID **IS** :2

в противном случае

WHERE SOME_RECORD_ID = :1 AND SOME_USER_ID **=** :2

Буду признателен за любые предложения по переработке запроса

1 Ответ

0 голосов
/ 25 октября 2018

Измените

SOME_USER_ID = :2

на

NVL(SOME_USER_ID, '***NULL SENTINEL VALUE***') = NVL(:2, '***NULL SENTINEL VALUE***')

или что-то подобное.

Чтобы обеспечить разумную производительность, вам может потребоваться добавить индекс на основе функций для NVL(SOME_USER_ID, '***NULL SENTINEL VALUE***')

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