Sql where сравнение строк

Операторы сравнения (Transact-SQL) Comparison Operators (Transact-SQL)

Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)

Операторы сравнения позволяют проверить, одинаковы ли два выражения. Comparison operators test whether two expressions are the same. Операторы сравнения можно применять ко всем выражениям, за исключением выражений типов text, ntext и image. Comparison operators can be used on all expressions except expressions of the text, ntext, or image data types. Операторы сравнения Transact-SQL Transact-SQL приведены в следующей таблице: The following table lists the Transact-SQL Transact-SQL comparison operators.

Оператор Operator Значение Meaning
= (равно) = (Equals) Равно Equal to
> (больше) > (Greater Than) Больше Greater than
Меньше чем Less than
>= (больше или равно) >= (Greater Than or Equal To) Больше или равно Greater than or equal to
Меньше или равно Less than or equal to
<> (не равно) <> (Not Equal To) Не равно Not equal to
!= (не равно) != (Not Equal To) Не равно (не определено стандартом ISO) Not equal to (not ISO standard)
! ! Не меньше (не определено стандартом ISO) Not less than (not ISO standard)
!> (не больше чем) !> (Not Greater Than) Не больше (не определено стандартом ISO) Not greater than (not ISO standard)

Логический тип данных Boolean Data Type

Результат выполнения оператора сравнения имеет тип данных Boolean. The result of a comparison operator has the Boolean data type. Он имеет три значения: TRUE, FALSE и UNKNOWN. This has three values: TRUE, FALSE, and UNKNOWN. Выражения, возвращающие значения типа Boolean, называются логическими. Expressions that return a Boolean data type are known as Boolean expressions.

В отличие от других типов данных SQL Server SQL Server , тип Boolean не может быть типом столбца таблицы или переменной и не может быть возвращен в результирующем наборе. Unlike other SQL Server SQL Server data types, a Boolean data type cannot be specified as the data type of a table column or variable, and cannot be returned in a result set.

Если параметр SET ANSI_NULLS имеет значение ON, оператор, в число операндов которого входит хотя бы одно выражение NULL, возвращает UNKNOWN. When SET ANSI_NULLS is ON, an operator that has one or two NULL expressions returns UNKNOWN. Если параметр SET ANSI_NULLS имеет значение OFF, применяются те же правила, за исключением операторов равенства (=) и неравенства (<>). When SET ANSI_NULLS is OFF, the same rules apply, except for the equals (=) and not equals (<>) operators. Если параметр SET ANSI_NULLS имеет значение OFF, эти операторы обрабатывают значение NULL как известное значение, эквивалентное любым другим значениям NULL, и возвращают только значение TRUE или FALSE (и никогда UNKNOWN). When SET ANSI_NULLS is OFF, these operators treat NULL as a known value, equivalent to any other NULL, and only return TRUE or FALSE (never UNKNOWN).

Выражения со значениями типа Boolean используются в предложении WHERE для фильтрации строк, удовлетворяющих условиям поиска, и в инструкциях языка управления потоком, таких как IF и WHILE, например: Expressions with Boolean data types are used in the WHERE clause to filter the rows that qualify for the search conditions and in control-of-flow language statements such as IF and WHILE, for example:

Источник

SQL Выражение WHERE

SQL WHERE

Выражение WHERE используется для фильтрации записей.

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

Синтаксис WHERE

Примечание: Выражение WHERE используется не только в инструкции SELECT, но и в инструкции UPDATE,DELETE и т.д.!

Демо база данных

Ниже приведен выбор из таблицы «Customers» в образце базы данных Northwind:

CustomerID CustomerName ContactName Address City PostalCode Country
1

Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico 3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico 4

Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK 5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

Пример WHERE

Следующая инструкция SQL выбирает всех клиентов из страны «Mexico» в таблице «Customers»:

Пример

Текстовые поля и числовые поля

SQL требует одинарных кавычек вокруг текстовых значений (большинство систем баз данных также допускают двойные кавычки).

Однако числовые поля не должны заключаться в кавычки:

Пример

Операторов в выражении WHERE

В выражении WHERE можно использовать следующие операторы:

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

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

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

Описание

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

Операторы сравнения Описание
= Равно
<> Не равно
!= Не равно
> Больше чем
>= Больше или равно
% и _
EXISTS Условие выполнено, если подзапрос возвращает хотя бы одну строку

Пример — оператор равенства

В SQL вы можете использовать оператор = для проверки на равенство в запросе.

В этом примере у нас есть таблица с suppliers со следующими данными:

supplier_id supplier_name city state
100 Yandex Moscow Moscow
200 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris Ile de France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Введите следующий SQL оператор:

supplier_id supplier_name city state
100 Yandex Moscow Moscow

Будет выбрана 1 запись. Вот результаты, которые вы должны получить:

В этом примере приведенный выше оператор SELECT возвращает все строки из таблицы suppliers , где supplier_name равно Yandex.

Пример — оператор неравенства

В SQL есть два способа проверить неравенство в запросе. Вы можете использовать оператор <> или != . Оба вернут одинаковые результаты.
Давайте использовать ту же таблицу suppliers , что и в предыдущем примере.

supplier_id supplier_name city state
100 Yandex Moscow Moscow
200 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris Ile de France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

Выполните следующий SQL оператор, чтобы проверить неравенство, используя оператор <> :

Или введите следующий SQL оператор, чтобы использовать оператор != :

Будет выбрано 8 записей. Вот результаты, которые вы должны получить с помощью одного из операторов SQL:

supplier_id supplier_name city state
200 Google Lansing Michigan
300 Oracle Redwood City California
400 Bing Redmond Washington
500 Yahoo Sunnyvale Washington
600 DuckDuckGo Paoli Pennsylvania
700 Qwant Paris Ile de France
800 Facebook Menlo Park California
900 Electronic Arts San Francisco California

В этом примере оба оператора SELECT будут возвращать все строки из таблицы suppliers , где supplier_name не равно Yandex.

Пример — оператор больше чем

Вы можете использовать оператор > в SQL для проверки выражения больше чем.
В этом примере у нас есть таблица customers со следующими данными:

В этом примере у нас есть таблица customers со следующими данными:

Источник

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Базы данных

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

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

Описание

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

Поделиться с друзьями
Моя стройка
Adblock
detector
Операторы сравнения Описание
= Равно
Равно (безопасное сравнение значения NULL)
<>, != Не равно
> Больше, чем
>= Больше или равно
= для проверки равенства в запросе. Оператор может проверять только равенство со значениями, которые не являются NULL.
Например:

В этом примере оператора SELECT, возвращает все строки из таблицы contacts , где last_name равно Bernard.

Пример оператора равенства (безопасный с нулевыми значениями)

Поскольку оператор = только сравнивает значения, отличные от NULL, использовать значения NULL небезопасно. Чтобы преодолеть это ограничение, MySQL добавил оператор , чтобы вы могли проверить равенство как со значениями NULL, так и с не NULL значениями.

Чтобы лучше объяснить разницу между оператором = и оператором , мы будем включать некоторые примеры как с запросами, так и с данными.

Предполагая, что у нас в MySQL есть таблица, называемая contacts , которая заполнена следующими данными:

contact_id last_name site1 site2
1 Arnold alexa.com
2 Gypsie
3 Boyson bing.com bing.com
4 Juan google.ru google.com

Мы могли бы использовать оператор = в следующем запросе:

Источник

Сравнение текстовых полей в mysql

Как правильнее сравнивать текстовые поля (типа VARCHAR ), через знак равенства ( = ) или же с помощью LIKE ?

Например, есть два поля:

Как правильнее написать условие выборки:

Я склоняюсь к мнению, что второй вариант правильнее, но хотелось бы удостовериться в этом. И ещё вопрос: если второй вариант более правильный, то первый вообще использовать не стоит? Например, если ранее поля fld1 и fld2 были типа INT , и в хранимых процедурах использовалась конструкция

после изменения типа этих полей на VARCHAR обязательно менять = на LIKE , или же это не критично?

UPD

И ещё вопрос: как правильно сравнивать поля VARCHAR и INT ? Почему такой вопрос возник.

Выполнение всех трёх нижеследующих запросов возвращает 1 , т.е. сравнение подтверждает равенство, что вроде бы логично:

Выполнение следующих двух запросов возвращает 0 , сравнение подтверждает неравенство, что тоже логично:

А вот следующих запрос:

возвращает 1 . Почему.

1 ответ 1

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

Оператор like в качестве второго аргумента ожидает получить маску, а маска это строка, поэтому перед операцией все типы данных MySQL пытается привести к строковому типу, в результате 0 будет приведен к ‘0’ , а ‘abc’ останется неизменной, так как она уже строка. В итоге будет произведено сравнение по маске ‘abc’ like ‘0’ , которое даст ложь.

В случае же оператора = , если типы операндов отличаются, MySQL приведет их к одному перед операцией сравнения, в случае строки и числа скорее всего к числу. А по хорошему вы должны давать этому оператору однотипные операнды изначально, что бы точно понимать как пойдет сравнение, приведя их заранее к нужному.

Источник