Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Like (SQL) )
Перейти к навигации Перейти к поиску

Предложение WHEREв SQL указывает, что оператор языка манипулирования данными SQL (DML) должен влиять только на строки, которые соответствуют указанным критериям. Критерии выражаются в форме предикатов. WHEREПредложения не являются обязательными предложениями операторов SQL DML, но могут использоваться для ограничения количества строк, затронутых оператором SQL DML или возвращаемых запросом. Вкратце предложение SQL WHERE используется для извлечения только тех результатов из оператора SQL, как: SELECT, INSERT, UPDATE или DELETE. [1]

Обзор [ править ]

WHEREявляется SQL зарезервированного слова.

Предложение WHEREиспользуется вместе с операторами SQL DML и принимает следующую общую форму:

SQL - DML - Оператор FROM  имя_таблицы  WHERE  предикат

все строки, для которых предикат в WHEREпредложении имеет значение True, затрагиваются (или возвращаются) оператором или запросом SQL DML. Строки, для которых предикат оценивается как False или Unknown ( NULL ), не затрагиваются оператором или запросом DML.

Следующий запрос возвращает только те строки из таблицы mytable, где значение в столбце mycol больше 100.

ВЫБРАТЬ  * FROM  туЬаОго WHERE  Mycol  >  100

Следующая DELETEинструкция удаляет из таблицы mytable только те строки, в которых столбец mycol либо равен NULL, либо имеет значение, равное 100.

УДАЛИТЬ ИЗ  туЬаЫе ГДЕ  Mycol  IS  NULL  ИЛИ  Mycol  =  100

Предикаты [ править ]

Простые предикаты использовать один из операторов =, <>, >, >=, <, <=, IN, BETWEEN, LIKE, IS NULLили IS NOT NULL.

При желании предикаты можно заключить в круглые скобки. Ключевые слова ANDи ORмогут использоваться для объединения двух предикатов в новый. Если применяется несколько комбинаций, можно использовать круглые скобки для группировки комбинаций, чтобы указать порядок оценки. Без круглых скобок ANDоператор имеет более сильную привязку, чем OR.

В следующем примере удаляются строки из mytable, где значение mycol больше 100, а значение item равно строковому литералу Hammer:

УДАЛИТЬ ИЗ  туЬаЫе ГДЕ  Mycol  >  100  и  пункт  =  «Молот»

IN [ править ]

IN найдет любые значения, существующие в наборе кандидатов.

ВЫБЕРИТЕ  эмаль,  ГДЕ  эмаль  В  ( 'Монреаль' ,  'Квебек' )

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

ВЫБЕРИТЕ  ename  WHERE  ename = 'value1'  OR  ename = 'value2'

за исключением того, что последний может позволить сравнение нескольких столбцов, чего нет в каждом INпредложении. Для большего числа кандидатов INменее подробный.

МЕЖДУ [ править ]

BETWEEN найдет любые значения в пределах диапазона.

ВЫБЕРИТЕ  ename  WHERE  ename  МЕЖДУ  'значением1'  И  'значением2'
ВЫБРАТЬ  зарплату  от  ого  КУДА  зарплат  МЕЖДУ  5000  И  10000

Все строки соответствуют предикату, если их значение находится в диапазоне от «значение1» до «значение2» включительно.

НРАВИТСЯ [ редактировать ]

LIKE найдет строку, соответствующую определенному описанию.

  • Конечный подстановочный знак
    • Найдите любую строку, которая начинается с буквы "S"
      ВЫБЕРИТЕ  ename  FROM  emp  WHERE  ename  LIKE  'S%' ;
  • Ведущий подстановочный знак
    • Найдите любую строку, которая заканчивается буквой S
      ВЫБЕРИТЕ  ename  FROM  emp  WHERE  ename  LIKE  '% S' ;
  • Множественные подстановочные знаки
    • Найдите любую строку, содержащую в любом месте букву "S"
      ВЫБЕРИТЕ  ename  FROM  emp  WHERE  ename  LIKE  '% S%' ;
  • Подстановочный знак из одного символа
    • Найдите любую строку, содержащую букву 'A', за которой следует любой одиночный символ, за которым следует буква 'E'
      ВЫБРАТЬ  ename  FROM  emp  WHERE  ename  LIKE  '% A_E%' ;
  • Классы персонажей [2]
    • Найдите любую строку, которая начинается с буквы, цифры или символа '_'
      ВЫБЕРИТЕ  ename  ИЗ  emp  ГДЕ  ename  LIKE  '[a-zA-Z0-9 _]%' ;

Программисты SQL должны знать, что предикат LIKE обычно выполняет поиск без обычного повышения производительности индексов. Использование '=', '<>' и т. Д. Вместо этого повысит производительность. Пользователи предиката LIKE должны знать, что чувствительность к регистру (например, «S» по сравнению с «s») может быть разной в зависимости от продукта или конфигурации базы данных.

Ссылки [ править ]

Внешние ссылки [ править ]