다음을 통해 공유


검색 조건(Transact-SQL)

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform Syste(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 Warehouse

논리 연산ANDOR자를 사용하는 하나 이상의 조건자 조합 및 NOT.

Transact-SQL 구문 표기 규칙

구문

SQL Server, Azure SQL Database 및 Azure SQL Managed Instance에 대한 구문입니다.

<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

Azure Synapse Analytics 및 병렬 데이터 웨어하우스에 대한 구문입니다.

< 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를 참조하세요 .

NOT

조건자에서 지정한 부울 식을 부정합니다. 자세한 내용은 NOT을 참조하세요.

AND

두 조건을 결합하고 두 조건이 모두 있는 경우를 TRUE 평가합니다 TRUE. 자세한 내용은 AND를 참조하세요.

또는

두 조건을 결합하고 두 조건 중 하나가 될 때 계산 TRUE 합니다 TRUE. 자세한 내용은 OR을 참조하세요.

<predicate>

또는 FALSEUNKNOWN을 반환TRUE하는 식입니다. 자세한 내용은 조건자를 참조 하세요.

expression

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

유니코드가 아닌 문자열 상수 및 변수는 데이터베이스의 기본 데이터 정렬에 해당하는 코드 페이지를 사용합니다. 코드 페이지 변환은 유니코드가 아닌 문자 데이터를 사용하고 유니코드가 아닌 char, varchartext 문자 데이터 형식을 참조할 때 발생할 수 있습니다. SQL Server는 해당 코드 페이지가 데이터베이스의 기본 데이터 정렬에 해당하는 코드 페이지와 다른 경우 유니코드가 아닌 문자열 상수 및 변수를 참조된 열의 데이터 정렬에 해당하거나 사용하여 COLLATE지정한 코드 페이지로 변환합니다. 새 코드 페이지에서 찾을 수 없는 문자는 가장 적합한 매핑을 찾을 수 있거나 기본 대체 문자로 변환되는 경우 유사한 문자?로 변환됩니다.

여러 코드 페이지를 사용하는 경우 문자 상수 앞에 대문 N자를 접두사로 지정할 수 있으며 코드 페이지 변환을 방지하기 위해 유니코드 변수를 사용할 수 있습니다.

= 연산자

두 식 간의 같음을 테스트하는 데 사용되는 연산자입니다.

<> 연산자

두 식이 서로 같지 않은 상태를 테스트하는 데 사용되는 연산자입니다.

!= 연산자

두 식이 서로 같지 않은 상태를 테스트하는 데 사용되는 연산자입니다.

> 연산자

한 식이 다른 식보다 큰 상태를 테스트하는 데 사용되는 연산자입니다.

>= 연산자

한 식이 다른 식보다 크거나 같은 상태를 테스트하는 데 사용되는 연산자입니다.

!> 연산자

한 식이 다른 식보다 크지 않은 상태를 테스트하는 데 사용되는 연산자입니다.

< 연산자

한 식이 다른 식보다 작은 상태를 테스트하는 데 사용되는 연산자입니다.

<= 연산자

한 식이 다른 식보다 작거나 같은 상태를 테스트하는 데 사용되는 연산자입니다.

!< 연산자

한 식의 조건이 다른 식보다 작지 않은지 테스트하는 데 사용되는 연산자입니다.

string_expression

문자 및 와일드카드 문자의 문자열입니다.

[ NOT ] 같이

다음에 나오는 문자열이 패턴 일치로 사용됨을 나타냅니다. 자세한 내용은 LIKE를 참조하세요.

ESCAPE 'escape_ 문자'

와일드카드 문자의 기능을 하지 않고 문자열에서 와일드카드 문자를 검색할 수 있도록 합니다. escape_character는 특별한 용도를 나타내기 위해 와일드카드 문자 앞에 놓이는 문자입니다.

[ NOT ] 사이

값의 포함 범위를 지정합니다. 시작 값과 끝 값을 구분하는 데 사용합니다 AND . 자세한 내용은 BETWEEN을 참조하세요.

IS [ NOT ] NULL

사용된 키워드에 따라 null 값 또는 null이 아닌 값에 대한 검색을 지정합니다. 비트 연산자 또는 산술 연산자가 있는 식은 NULL피연산자 중 하나가 있는 경우 계산 NULL 됩니다.

IS [ NOT ] DISTINCT FROM

두 식의 같음을 비교하고 하나 또는 두 피연산자 중 하나라도 true 또는 false 결과를 보장합니다 NULL. 자세한 내용은 IS [NOT] DISTINCT FROM(Transact-SQL)을 참조하세요.

CONTAINS

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

FREETEXT

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

[ NOT ] IN

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

subquery

제한된 SELECT 문으로 간주될 수 있으며 문과 SELECT 유사합니다<query_expression>. ORDER BY 절과 키워드는 INTO 허용되지 않습니다. 자세한 내용은 SELECT를 참조하세요.

ALL

비교 연산자 및 하위 쿼리와 함께 사용됩니다. TRUE 하위 쿼리에 <predicate> 대해 검색된 모든 값이 비교 작업을 충족하는 경우 또는 FALSE 모든 값이 비교를 충족하지 않거나 하위 쿼리가 외부 문에 행을 반환하지 않는 경우를 반환합니다. 자세한 내용은 ALL을 참조하세요.

{ SOME | ANY }

비교 연산자 및 하위 쿼리와 함께 사용됩니다. TRUE <predicate> 하위 쿼리에 대해 검색된 값이 비교 작업을 충족하는 경우 또는 FALSE 하위 쿼리의 값이 비교를 충족하지 않거나 하위 쿼리가 외부 문에 행을 반환하지 않는 경우를 반환합니다. 그렇지 않으면 식은 .입니다 UNKNOWN. 자세한 내용은 SOME | 참조 ANY.

EXISTS

하위 쿼리와 함께 사용되어 하위 쿼리에서 반환한 행의 존재 여부를 검사합니다. 자세한 내용은 EXISTS를 참조 하세요.

설명

논리 연산자의 우선 순위는 NOT(가장 높음), AND, OR 순입니다. 검색 조건에 괄호를 사용하면 이 순서를 무시할 수 있습니다. 논리 연산자의 계산 순서는 쿼리 최적화 프로그램에서 선택한 내용에 따라 달라질 수 있습니다. 논리 연산자가 논리 값에서 작동하는 방법에 대한 자세한 내용은 AND, ORNOT을 참조하세요.

예제

이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022 또는 AdventureWorksDW2022 샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트 홈 페이지에서 다운로드할 수 있습니다.

A. LIKE 및 ESCAPE 구문과 함께 WHERE 사용

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