SQL WHERE column = все

Может ли SQL что-то делать по строкам этого: SELECT * FROM table WHERE column = everything

Ответ 1

Ваш вопрос позволяет три интроверсии:

  1. Вы не заботитесь о столбце: отбросьте его из предложения where (или оставьте предложение where alltogether, если это был единственный подпункт)
  2. Вы хотите, чтобы столбец был установлен, бит, который вам не нравится: WHERE column IS NOT nULL
  3. Вам нужен поиск, который также может отображать все записи из простого шаблона 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