Условие поиска (Transact-SQL)
Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric
Сочетание одного или нескольких предикатов, в котором используются логические операторы AND, OR и NOT.
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- Syntax for SQL Server and Azure SQL Database
<search_condition> ::=
MATCH (<graph_search_pattern>) | <search_condition_without_match> | <search_condition> AND <search_condition>
<search_condition_without_match> ::=
{ [ NOT ] <predicate> | ( <search_condition_without_match> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition_without_match> ) } ]
[ ...n ]
<predicate> ::=
{ expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression
| string_expression [ NOT ] LIKE string_expression
[ ESCAPE 'escape_character' ]
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| expression IS [ NOT ] DISTINCT FROM
| CONTAINS
( { column | * } , '<contains_search_condition>' )
| FREETEXT ( { column | * } , 'freetext_string' )
| expression [ NOT ] IN ( subquery | expression [ ,...n ] )
| expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ ALL | SOME | ANY} ( subquery )
| EXISTS ( subquery ) }
<graph_search_pattern> ::=
{ <node_alias> {
{ <-( <edge_alias> )- }
| { -( <edge_alias> )-> }
<node_alias>
}
}
<node_alias> ::=
node_table_name | node_table_alias
<edge_alias> ::=
edge_table_name | edge_table_alias
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse
< search_condition > ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ...n ]
<predicate> ::=
{ expression { = | < > | ! = | > | > = | < | < = } expression
| string_expression [ NOT ] LIKE string_expression
| expression [ NOT ] BETWEEN expression AND expression
| expression IS [ NOT ] NULL
| expression [ NOT ] IN (subquery | expression [ ,...n ] )
| expression [ NOT ] EXISTS (subquery)
}
Примечание.
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
<search_condition>
Задает условия для строк, возвращаемых в результирующем наборе инструкции SELECT, выражения запроса или вложенного запроса. Задает обновляемые строки для инструкции UPDATE. Задает удаляемые строки для инструкции DELETE. Количество предикатов, которое может содержаться в условии поиска для инструкции Transact-SQL, не ограничено.
<graph_search_pattern>
Определяет шаблон сопоставления графов. Дополнительные сведения об аргументах этого предложения см. в разделе MATCH (Transact-SQL)
Логическое НЕ
Инвертирует логическое выражение, задаваемое предикатом. Дополнительные сведения см. в разделе NOT (Transact-SQL).
И
Объединяет два условия и выдает значение TRUE, если оба условия имеют значение TRUE. Дополнительные сведения см. в разделе AND (Transact-SQL).
ИЛИ
Объединяет два условия и выдает значение TRUE, если хотя бы одно условие имеет значение TRUE. Дополнительные сведения см. в статье OR (Transact-SQL).
< predicate >
Выражение, возвращающее значения TRUE, FALSE или UNKNOWN.
выражение
Может являться именем столбца, константой, функцией, переменной, скалярным вложенным запросом или любым сочетанием имен столбцов, констант и функций, связанных операторами или вложенным запросом. Также может содержать выражение CASE.
Примечание.
Строковые константы и переменные не в Юникоде используют кодовую страницу, соответствующую параметрам сортировки базы данных, действующим по умолчанию. Преобразования кодовых страниц могут происходить при работе только с символьными данными не в Юникоде и упоминании символьных типов данных char, varchar и text не в Юникоде. SQL Server преобразует константы строк и переменные, отличные от Юникода, в кодовую страницу, соответствующую сортировке ссылочного столбца или заданному с помощью COLLATE, если эта кодовая страница отличается от кодовой страницы, соответствующей параметрам сортировки по умолчанию базы данных. Символы, не найденные на новой кодовой странице, преобразуются в похожий символ при обнаружении наилучшего соответствия либо, в противном случае, преобразуются в символ замены по умолчанию "?".
Чтобы при работе с несколькими кодовыми страницами избежать их преобразования, можно использовать переменные Юникода, а символьные константы могут иметь префикс в виде прописной буквы N.
=
Оператор, используемый для проверки равенства двух выражений.
<>
Оператор, используемый для проверки условий неравенства условий двух выражений.
!=
Оператор, используемый для проверки условий неравенства условий двух выражений.
>
Оператор, используемый для проверки превышения одного выражения над условием другого.
>=
Оператор, используемый для проверки превышения либо равенства двух выражений.
!>
Оператор, используемый для проверки того, что одно выражение не превышает другое выражение.
<
Оператор, используемый для проверки того, что одно выражение меньше другого.
<=
Оператор, используемый для проверки того, что одно выражение меньше или равно другому.
!<
Оператор, используемый для проверки того, что одно выражение не меньше другого.
string_expression
Строка обычных символов и символов-шаблонов.
[ NOT ] LIKE
Указывает, что последующая строка символов будет использоваться с сопоставлением шаблонов. Дополнительные сведения см. в статье LIKE (Transact-SQL).
ESCAPE 'escape_ character'
Позволяет найти сам символ-шаблон в строке (вместо того чтобы использовать его как шаблон). escape_character — это символ, который нужно поместить перед символом-шаблоном, чтобы указать данное специальное использование.
[ NOT ] BETWEEN
Задает включающий диапазон значений. Используйте оператор AND для разделения начальных и конечных значений. Дополнительные сведения см. в разделе BETWEEN (Transact-SQL).
IS [ NOT ] NULL
Задает поиск значений NULL или значений, не являющихся значениями NULL, в зависимости от используемых ключевых слов. При обращении одного из операндов выражения с битовыми или арифметическими операторами в значение NULL указанное выражение также обращается в значение NULL.
IS [ NOT ] DISTINCT FROM
Сравнивает равенство двух выражений и гарантирует истинный или ложный результат, даже если один или оба операнда имеют значение NULL. Дополнительные сведения см. в статье IS [NOT] DISTINCT FROM (Transact-SQL).
CONTAINS
Осуществляет поиск столбцов, содержащих символьные данные с заданной точностью (fuzzy), соответствующие заданным отдельным словам и фразам на основе похожести словам и точному расстоянию между словами, взвешенному совпадению. Этот параметр может быть использован только в инструкции SELECT. Дополнительные сведения см. в статье CONTAINS (Transact-SQL).
FREETEXT
Предоставляет простую форму естественного языка ввода запросов на осуществление поиска столбцов, содержащих символьные данные, совпадающие с содержанием предиката не точно, а по смыслу. Этот параметр может быть использован только в инструкции SELECT. Дополнительные сведения см. в статье FREETEXT (Transact-SQL).
[ NOT ] IN
Задает поиск выражения, основанного на выражении, включенного или исключенного из списка. Выражение поиска может быть константой или именем столбца, а списком может быть набор констант или, что чаще, вложенный запрос. Список значений необходимо заключать в скобки. Дополнительные сведения см. в разделе IN (Transact-SQL).
subquery
Может рассматриваться как ограниченная инструкция SELECT и действует аналогично <query_expresssion> в инструкции SELECT. Использование предложения ORDER BY и ключевого слова INTO не допускается. Дополнительные сведения см. в разделе SELECT (Transact-SQL).
ВСЕ
Используется с оператором сравнения и вложенным запросом. Возвращает для <predicate> значение TRUE, если все получаемые для вложенного запроса значения удовлетворяют условию, и значение FALSE, если не все значения удовлетворяют условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки. Дополнительные сведения см. в разделе ALL (Transact-SQL).
{ SOME | ANY }
Используется с оператором сравнения и вложенным запросом. Возвращает для <predicate> значение TRUE, если хотя бы одно получаемое для вложенного запроса значение удовлетворяет условию, и значение FALSE, если ни одно из значений не удовлетворяет условию или в случае, когда в результате выполнения вложенного запроса внешней инструкции не выдается ни одной строки. В противном случае результатом выражения является значение UNKNOWN. Дополнительные сведения см. в статье SOME | ANY (Transact-SQL).
EXISTS
Используется во вложенном запросе для проверки существования строк, возвращенных вложенным запросом. Дополнительные сведения см. в статье EXISTS (Transact-SQL).
Замечания
Приоритеты выполнения логических операторов распределяются следующим образом: NOT (наивысший приоритет), AND, OR (низший приоритет). Для перераспределения указанных приоритетов в условии поиска используются скобки. Порядок выполнения логических операторов может меняться в зависимости от настроек оптимизатора запросов. Дополнительные сведения о работе логических операторов с логическими значениями см. в статьях AND (Transact-SQL), OR (Transact-SQL) и NOT (Transact-SQL).
Примеры
А. Использование предложения WHERE с синтаксисом LIKE и ESCAPE
В ходе выполнения следующего примера производится поиск строк, для которых элементы столбца LargePhotoFileName
содержат символы green_
, а также для символа-шаблона _
используется параметр ESCAPE
. Без указания параметра ESCAPE
в ходе выполнения запроса будет производиться поиск всех описанных значений, содержащих слово green
, за которым следует любой единичный символ, отличный от _
.
USE AdventureWorks2022;
GO
SELECT *
FROM Production.ProductPhoto
WHERE LargePhotoFileName LIKE '%greena_%' ESCAPE 'a' ;
B. Использование предложения WHERE и синтаксиса LIKE с данными в Юникоде
В следующем примере используется предложение WHERE
для отображения всех адресов офисов компаний, находящихся за пределами США (US
) и в городах, названия которых начинаются с Pa
.
USE AdventureWorks2022;
GO
SELECT AddressLine1, AddressLine2, City, PostalCode, CountryRegionCode
FROM Person.Address AS a
JOIN Person.StateProvince AS s ON a.StateProvinceID = s.StateProvinceID
WHERE CountryRegionCode NOT IN ('US')
AND City LIKE N'Pa%' ;
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
C. Использование предложения WHERE с LIKE
В следующем примере производится поиск строк, в которых столбец LastName
содержат символы and
.
-- Uses AdventureWorks
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE LastName LIKE '%and%';
D. Использование предложения WHERE и синтаксиса LIKE с данными в Юникоде
В следующем примере используется предложение WHERE
для выполнения поиска в формате Юникод в столбце LastName
.
-- Uses AdventureWorks
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE LastName LIKE N'%and%';
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по