Вопрос по mysql, sql – Столбец SQL WHERE = все

20

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

Я только что столкнулся с той же проблемой, что и вы. Это кажется глупым снаружи (просто бросьтеwhere пункт), но было бы проще, если бы нужно было написать только один параметризованный запрос, а не набор условий. Любопытно, если что-то изменилось с 2012 года. Andrew Brown
О, боже, я такой тупой @zerkms. Я целый день боролся с тем, что частично положить для WHERE, чтобы соответствовать чему-то вроде *, и я просто понял, что мне просто нужно это удалить: D Luka
если вам не нужен столбец, удалите все определение WHERE lukas.pukenis
Просто удалите эту часть строки. Если вы не заботитесь оcolumn значение - даже не ставьте егоwhere zerkms
Я пытаюсь решить эту проблему для удобства. У меня есть 3 подготовленных утверждения, которые могут иметь или не иметь 3 переменные, объединенные в предложении where. Вместо того, чтобы писать несколько подготовленных операторов для комбинаций всех трех значений переменных (нуль, не ноль), я бы хотел игнорировать переменную в предложении where, если ее там нет. Foo

Ваш Ответ

7   ответов
16

You don't care about the column: drop the it from the where clause (or drop the where clause alltogether, if this was the only subclause) You want the column to be set, bit you don't care to what: Use WHERE column IS NOT nULL You want a search, that can also display all records from a simple SQL template: SELECT * FROM table WHERE column LIKE '%$searchterm%'
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

Если это кому-нибудь поможет ... просто укажу, если у вас есть проблема, такая как 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

Все или что-нибудь?

Вы могли бы использовать подстановочный знак, я думаю.

SELECT * FROM table WHERE column LIKE "%"
Error: User Rate Limit ExceededNULLError: User Rate Limit Exceeded
Error: User Rate Limit ExceededSELECT * FROM tableError: User Rate Limit ExceededWHEREError: User Rate Limit Exceeded
Error: User Rate Limit ExceededSELECT * FROM table WHERE field='22' OR field LIKE '%';Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded= '%'Error: User Rate Limit Exceeded
1

Возможно, вы ищете оператора критериев IN? SELECT * из таблицы, где столбец в (1,2,3,4,5) или столбец в («значение», «значение 2», «значение 3»);

2

Error: User Rate Limit Exceeded

Вы можете попробовать это.

where 
    isnull([column], '') = CASE WHEN @column IS NULL THEN isnull([column], '') ELSE @column END 
22

SELECT * FROM table

Если вы генерируете SQL динамически, это

SELECT * FROM table WHERE 1=1

1=1 заполнитель позволяет вам возвращать все записи или заменять фактическое условие, если вы возвращаете подмножество или вам нужны дополнительные условные операторы.

See Also
Почему кто-то использует WHERE 1 = 1 AND & lt; условий & gt; в предложении SQL?

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

Для тех, кому по какой-либо причине НУЖНО имя столбца в запросе, хорошей альтернативой будетSELECT * FROM table WHERE column = column

Это очень похоже наWHERE 1=1Однако он включает в себя имя столбца, которое требуется для моего решения, и, возможно, потребуется еще несколько других.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы