Может ли SQL что-то делать по строкам этого: SELECT * FROM table WHERE column = everything
SQL WHERE column = все
Ответ 1
Ваш вопрос позволяет три интроверсии:
- Вы не заботитесь о столбце: отбросьте его из предложения where (или оставьте предложение where alltogether, если это был единственный подпункт)
- Вы хотите, чтобы столбец был установлен, бит, который вам не нравится:
WHERE column IS NOT nULL
- Вам нужен поиск, который также может отображать все записи из простого шаблона SQL:
SELECT * FROM table WHERE column LIKE '%$searchterm%'
Ответ 2
SELECT * FROM table
Если вы генерируете SQL динамически, это
SELECT * FROM table WHERE 1=1
Заполнитель 1=1
позволяет вам возвращать все записи или заменять фактическое условие, если вы возвращаете подмножество или нуждаетесь в дополнительных условных операторах.
Смотрите также
Почему кто-то использует WHERE 1 = 1 AND <conditions> в предложении SQL?
Ответ 3
Все или что-то еще?
Думаю, вы могли бы использовать подстановочный знак.
SELECT * FROM table WHERE column LIKE "%"
Ответ 4
Для тех, кому по какой-либо причине НУЖНО имя столбца в запросе, хорошей альтернативой будет SELECT * FROM table WHERE column = column
Это очень похоже на WHERE 1=1
, однако оно включает в себя имя столбца, которое требуется для моего решения, и, возможно, потребуется еще несколько других.
Ответ 5
Это поздно, но может быть полезно другим
Вы можете попробовать это.
where
isnull([column], '') = CASE WHEN @column IS NULL THEN isnull([column], '') ELSE @column END
Ответ 6
Возможно, вы ищете оператор критериев IN?
SELECT * from table where column in (1,2,3,4,5) or column in ('value', 'value2', 'value3');
Ответ 7
SELECT * FROM table WHERE column = IF (? = '', column, ?);
Ответ 8
Если это кому-нибудь поможет... просто укажу, если у вас есть проблема, такая как SELECT * ОТ чего-то, ГДЕ (может быть конкретная или все), такая как фильтрация, вы можете использовать SELECT * FROM something as s WHERE (?1 = 0 OR?1 = s.type =?1)
0 здесь просто предопределено для всех, так что не стесняйтесь менять, мне это нужно было при использовании репозиториев JPA с hibernate для фильтрации. Вы не можете сделать это с медицинской точки зрения, как это было предложено в предыдущем ответе из-за безопасности с подготовленными утверждениями. Где? 1 соответствует:
Page<Something> filterSometing(Long type,Pageable pageable);
Ответ 9
Ну, у меня была такая же проблема, и следующее решило мою проблему:
... where column = case when @variable = 'all' then column else @variable end
Имейте в виду, что вы всегда должны отправлять значение по умолчанию, я устанавливаю значение по умолчанию как "все". Так что, если я установил
@variable = 'all'
, mysql читает это как:where column = column
что то же самое, что иwhere 1=1