Ничего не соответствует = NULL
. Единственный способ проверить это с помощью IS NULL
.
Вы можете делать разные вещи, но прямолинейный это ...
WHERE
middle = ?
OR (middle IS NULL and ? IS NULL)
Если есть значение, которое вы знаете, НИКОГДА не появляется, вы можете изменить его на ...
WHERE
COALESCE(middle, '-') = COALESCE(?, '-')
Но вам нужно значение, которое буквально появляется НИКОГДА . Кроме того, это запутывает использование индексов, но версия OR
также часто может быть отстойной (я не знаю, насколько хорошо SQLite ее обрабатывает).
При прочих равных, я рекомендую первую версию.