SQL Параметр для включения всего в столбец идентификатора - PullRequest
2 голосов
/ 25 мая 2020

Я просто смотрю на следующий запрос

select * from tablename
where id like '%%';

, чтобы он мог обрабатывать параметры для включения всех данных или отфильтрованных данных, как показано ниже

select * from tablename
where id like '%1%';

Который подходит для большинства параметров, которые я использую, но это кажется неправильным для идентификатора, поскольку он вернет все данные с идентификаторами, содержащими 1, который мне не нужен

Чтобы обойти это, я могу добавить предложение where только в том случае, если Идентификатор указан, но это похоже на головную боль

Можно ли использовать другой тип предложения where, чтобы можно было использовать подстановочный знак в предложении where equals вместо предложения where like, пример

select * from tablename
where id = '*';

Чтобы один и тот же запрос можно было использовать для возврата всех или отфильтрованных данных? Передайте параметр '*' для всех или параметр '1' специально для ID 1

(я не уверен, имеет ли это значение в данном случае, но в этом примере я использую PostgreSQL 9.6.12)

1 Ответ

2 голосов
/ 25 мая 2020

Это часто выражается как:

where (id = :id or :id is null)

null - значение «magi c», которое представляет все строки.

...