검색 조건(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

검색 조건은 논리 연산자 AND, OR 및 NOT을 사용하여 하나 이상의 조건자를 결합한 것입니다.

Transact-SQL 구문 표기 규칙

Syntax

-- 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)
    }

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

<search_condition>
SELECT 문, 쿼리 식 또는 하위 쿼리에 대해 결과 집합에 반환되는 행의 조건을 지정합니다. UPDATE 문에는 업데이트할 행을 지정합니다. DELETE 문에는 삭제할 행을 지정합니다. Transact-SQL 문의 검색 조건에 포함할 수 있는 조건자의 개수에는 제한이 없습니다.

<graph_search_pattern>
그래프 일치 패턴을 지정합니다. 이 절의 인수에 대한 자세한 내용은 MATCH(Transact-SQL)를 참조하세요.

NOT
조건자에서 지정한 부울 식을 부정합니다. 자세한 내용은 GRANT(Transact-SQL)를 참조하세요.

AND
두 조건이 TRUE일 때 두 조건을 결합하여 TRUE로 평가합니다. 자세한 내용은 AND(Transact-SQL)를 참조하세요.

또는
두 조건 중 하나가 TRUE일 때 두 조건을 결합하여 TRUE로 평가합니다. 자세한 내용은 OR(Transact-SQL)를 참조하세요.

< predicate >
TRUE, FALSE 또는 UNKNOWN을 반환하는 식입니다.

expression
열 이름, 상수, 함수, 변수, 스칼라 하위 쿼리이거나 열 이름, 상수 및 연산자나 하위 쿼리로 연결된 함수의 결합입니다. 식에는 CASE 식도 포함될 수 있습니다.

참고

유니코드가 아닌 문자열 상수 및 변수는 데이터베이스의 기본 데이터 정렬에 해당하는 코드 페이지를 사용합니다. 코드 페이지 변환은 유니코드가 아닌 문자 데이터를 사용하고 유니코드가 아닌 char, varchartext 문자 데이터 형식을 참조할 때 발생할 수 있습니다. 코드 페이지가 데이터베이스의 기본 데이터 정렬에 해당 하는 코드 페이지와 다른 경우 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인 경우에도 true 또는 false 결과를 보장합니다. 자세한 내용은 IS [NOT] DISTINCT FROM(Transact-SQL)을 참조하세요.

CONTAINS
문자 기반 데이터가 포함된 열에서 단일 단어와 구, 특정 거리에 있는 단어의 근접성 및 가중치 일치 항목과 정확한 일치하거나 비슷하게 일치(유사 일치)하는 열을 검색합니다. 이 옵션은 SELECT 문에서만 사용할 수 있습니다. 자세한 내용은 CONTAINS(Transact-SQL)를 참조하세요.

FREETEXT
문자 기반 데이터가 포함된 열에서 조건자에 있는 정확한 단어 대신 의미가 일치하는 값을 검색함으로써 단순한 형태의 자연어 쿼리를 제공합니다. 이 옵션은 SELECT 문에서만 사용할 수 있습니다. 자세한 내용은 FREETEXT(Transact-SQL)를 참조하세요.

[ NOT ] IN
식이 목록에 포함되는지 또는 제외되는지 여부에 따라 식을 검색하도록 지정합니다. 검색 식은 상수 또는 열 이름이 될 수 있으며 목록은 상수 집합 또는 더 일반적으로는 하위 쿼리가 될 수 있습니다. 값의 목록은 괄호로 묶어야 합니다. 자세한 내용은 IN(Transact-SQL)을 참조하세요.

subquery
제한된 SELECT 문으로 간주할 수 있고, SELECT 문에서 <query_expression>과 비슷합니다. ORDER BY 절 및 INTO 키워드는 허용되지 않습니다. 자세한 내용은 SELECT(Transact-SQL)를 참조하세요.

ALL
비교 연산자 및 하위 쿼리와 함께 사용됩니다. 하위 쿼리에 대해 검색된 모든 값이 비교 연산을 충족하면 <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)을 참조하세요.

예제

A. 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. LIKE가 포함된 WHERE 사용

다음 예제에서는 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%';  

추가 정보