Что означает where
Перейти к содержимому

Что означает where

Предложение WHERE (Transact-SQL)

Определяет условия поиска строк, возвращаемых запросом.

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

<search_condition> Определяет условия, которые должны быть выполнены для всех возвращаемых строк. Количество предикатов, которое может содержать условие поиска, не ограничено. Дополнительные сведения об условиях поиска и предикатах см. в статье Условие поиска (Transact-SQL).

Примеры

В следующих примерах показывается, как можно использовать в предложении WHERE различные распространенные условия поиска.

Условный оператор WHERE

Ситуация, когда требуется сделать выборку по определенному условию, встречается очень часто. Для этого в операторе SELECT существует параметр WHERE , после которого следует условие для ограничения строк. Если запись удовлетворяет этому условию, то попадает в результат, иначе отбрасывается.

Общая структура запроса с оператором WHERE

В описанной структуре запроса необязательные параметры указаны в квадратных скобках.

В условном операторе применяются операторы сравнения, специальные и логические операторы.

Операторы сравнения

Операторы сравнения служат для сравнения 2 выражений, их результатом может являться ИСТИНА ( 1 ), ЛОЖЬ ( 0 ) и NULL .

Оператор Описание
= Оператор равенство
<=> Оператор эквивалентность
Аналогичный оператору равенства, с одним лишь исключением: в отличие от него, оператор эквивалентности вернет ИСТИНУ при сравнении NULL <=> NULL
<>
или
!=
Оператор неравенство
< Оператор меньше
<= Оператор меньше или равно
> Оператор больше
>= Оператор больше или равно

Специальные операторы

1. IS [NOT] NULL — позволяет узнать равно ли проверяемое значение NULL .

Для примера выведем всех членов семьи, у которых статус в семье не равен NULL:

2. [NOT] BETWEEN min AND max — позволяет узнать расположено ли проверяемое значение столбца в интервале между min и max .

Выведем все данные о покупках с ценой от 100 до 500 рублей из таблицы Payments:

3. [NOT] IN — позволяет узнать входит ли проверяемое значение столбца в список определённых значений.

Выведем имена членов семьи, чей статус равен «father» или «mother»:

4. [NOT] LIKE шаблон [ESCAPE символ] — позволяет узнать соответствует ли строка определённому шаблону.

Например, выведем всех людей с фамилией «Quincey»:

Трафаретные символы

В шаблоне разрешается использовать два трафаретных символа:

  • символ подчеркивания (_), который можно применять вместо любого единичного символа в проверяемом значении
  • символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.
ESCAPE-символ

ESCAPE-символ используется для экранирования трафаретных символов. В случае если вам нужно найти строки, содержащие проценты (а процент — это зарезервированный символ), вы можете использовать ESCAPE-символ .

Например, вы хотите получить идентификаторы задач, прогресс которых равен 3%:

Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.

Логические операторы

Логические операторы необходимы для связывания нескольких условий ограничения строк.

  • Оператор NOT — меняет значение специального оператора на противоположный
  • Оператор OR — общее значение выражения истинно, если хотя бы одно из них истинно
  • Оператор AND — общее значение выражения истинно, если они оба истинны
  • Оператор XOR — общее значение выражения истинно, если один и только один аргумент является истинным

Выведем все полёты, которые были совершены на самолёте «Boeing», но, при этом, вылет был не из Лондона:

Конструкция WHERE в SQL

Конструкция WHERE в SQL

При выборке записей из таблицы практически всегда требуется задавать определённые условия, по которым мы определяем, какие записи нам нужны, а какие — нет. И именно эти условия можно задавать с помощью конструкции WHERE в SQL. Я уже знакомил Вас с ней, но в этой статье решил познакомить с WHERE немного поближе.

Начну с простого примера выборки с использованием конструции WHERE в SQL:

SELECT * FROM table WHERE count=5

Вернутся записи, в которых поле «count» имеет значение 5. Теперь усложним запрос:

SELECT * FROM table WHERE count=5 AND id < 100

Таким образом, вернутся записи, у которых поле «count» имеет значение 5 И поле «id» имеет значение меньше 100.

Разумеется, Вы можете использовать и другие логические операции. Их полный список:

  • ! (отрицание)
  • AND (И)
  • OR (ИЛИ)
  • XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ, иногда ещё называют МОНТАЖНОЕ ИЛИ, но такое название встречается в основном в микропроцессорной литературе)

Пример с использованием нескольких логических операторов:

SELECT * FROM table WHERE !(id <= 120 AND (count=10 OR date > «10/11/1980»))

Вот такой, на первый взгляд, сложный SQL-запрос. Постарайтесь в нём разобраться самостоятельно.

Также конструкция WHERE в SQL может содержать LIKE. LIKE позволяет определить, совпадает ли указанная строка с определённым шаблоном. Чтобы стало немного понятнее, приведу пример:

SELECT * FROM table WHERE text LIKE «%some text%»

Данный SQL-запрос вернёт result_set, содержащий записи, в которых поле «text» имеет такой текст: «some text«. Обратите внимание, что это не проверка на равенство. Текст может быть огромным, но если в нём содержитася строка: «some text«, то LIKE вернёт true.

Давайте напишу, как задаётся шаблон для LIKE:

  • % — это то, что мы с Вами использовали. Используется он чаще всего и означает он любую строку любой длины. Фактически, строкой «%some text%» мы говорим, что сначала идёт любая строка любой длины, затем «some text«, а затем вновь любая строка любой длины. Если текст удовлетворяет этому шаблону, то вернуть true, иначе false.
  • [ ] — это одиночный символ. Чтобы использовать этот шаблон необходимо задавать диапазоны, например, так: «[a-z]some%«. Данный шаблон будет означать, что сначала идёт 1 символ (любой символ от a до z), далее «some» и потом любая строка любой длины.
  • _ — это любой одиночный символ.
  • [^] — это противоположность [ ]. Например, можно привести такой пример: «[^az]some_«. Данный шаблон означает, что вначале идёт любой символ, но только НЕ «a» и НЕ «z«. Далее должна идти строка «some«, а после только один одиночный символ.

Знание и умение использования LIKE очень важно, поверьте моему опыту. Самый простой пример использования LIKE — это поиск по сайту. Ведь контент находится в базе данных, и необходимо вытащить только те записи, в которых содержится строка, заданная в строке поиска. И тут приходит на помощь LIKE. Именно так реализован поиск мною на этом сайте.

Вот, пожалуй, всё, что необходимо знать для успешной выборки записей с использованием конструкции WHERE в SQL.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 10 ):

Спасибо! А как учитывать регистр? Например, если понадобиться сверить пароль введённый пользователем с тем, что имеется в базе? Я ошибаюсь или LIKE не учитывает регистр, как и если бы сделать запрос SELECT * FROM table WHERE password=’$password’, где $password — пароль, указанный в форме? Тогда ABCdef, abcDEF, abcdef и т.д. будут совпадать. Спасибо.

Для учёта регистра необходимо перед названием поля ставить BINARY. Данная команда преобразует следующую за ним строку в двоичный набор данных, таким образом, регистр будет учтён. Пример: SELECT * FROM table WHERE BINARY password = ‘myPasSword’

Теперь я полностью удовлетворён. Спасибо.

Здравствуйте, Михаил. Помогите решить проблему: нужна функция, которая будет добавлять в таблице БД в статью дополнительные данные. Например есть таблица с 5 полями 4 заполнено, нужно функция которая будет заполнять пятое поле у определенной статьи. Я пытался вчтавить конструкцию (WHERE `id`=’$id’) непомоголо. Можно ли такое реализовать.

Нужно использовать запрос UPDATE.

а как сделать чтоб можно было указать не часный id, а брать его из строки в БД. Например у меня в таблице 100 запией и у каждой одно поде пустое. Выходит надо сделать 100 функций?

Не надо тогда вообще писать WHERE.

допустим у меня в БД есть таблица в которой хранятся заказы: закащик, дата и статус. список со всеми заказами выводится на страницу со сылками для подробного ознакомления. допустим 1 из них, а их например 100, я выполнил. я со страницы определенного заказа хочу отправить форму с датой окончания т статусом.

Напишите пожалуйста про малоизвестную команду XOR в PHP и MySQL. А также про все остальные логические команды

Хорошо, примем во внимание.

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *