_ (와일드카드 - 문자 하나와 일치)(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스Azure SQL Managed Instance

밑줄 문자(_)를 사용하여 LIKEPATINDEX와 같은 패턴 일치가 포함된 문자열 비교 작업에서 단일 문자와 일치하도록 합니다.

예제

A: 간단한 예

다음 예제에서는 문자 m로 시작하고 문자 d를 세 번째 문자로 가진 모든 데이터베이스 이름을 반환합니다. 밑줄 문자는 이름의 두 번째 문자가 임의의 문자가 될 수 있음을 나타냅니다. modelmsdb 데이터베이스는 이 기준을 충족합니다. master 데이터베이스는 그렇지 않습니다.

SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';

결과 집합은 다음과 같습니다.

name
-----
model
msdb

이 조건을 충족하는 추가 데이터베이스가 있을 수 있습니다.

여러 개의 밑줄을 사용하여 여러 문자를 나타낼 수 있습니다. 두 개의 밑줄 'm__%을 포함하도록 LIKE 조건을 변경하면 결과에 master 데이터베이스가 포함됩니다.

B: 복잡한 예

다음 예제에서는 _연산자를 사용하여 Person 테이블에서 an으로 끝나는 3개 문자로 된 이름을 가진 모든 사람을 찾습니다.

-- USE AdventureWorks2022;
  
SELECT FirstName, LastName  
FROM Person.Person  
WHERE FirstName LIKE '_an'  
ORDER BY FirstName;  

C: 밑줄 문자 이스케이핑

다음 예제에서는 db_ownerdb_ddladmin와 같은 고정 데이터베이스 역할의 이름을 반환하지만 dbo 사용자도 반환합니다.

SELECT name FROM sys.database_principals
WHERE name LIKE 'db_%';

세 번째 문자 위치의 밑줄은 와일드카드로 사용되며 db_ 문자로 시작하는 보안 주체만 필터링하지 않습니다. 밑줄을 이스케이프하려면 대괄호 [_]로 묶습니다.

SELECT name FROM sys.database_principals
WHERE name LIKE 'db[_]%';

이제 dbo 사용자는 제외됩니다.

결과 집합은 다음과 같습니다.

name
-------------
db_owner
db_accessadmin
db_securityadmin
...

참고 항목

LIKE(Transact-SQL)
PATINDEX(Transact-SQL)
%(와일드카드 - 하나 이상의 문자 일치)
[ ](와일드카드 - 하나 이상의 문자 일치)
[^](와일드카드 - 하나 이상의 문자 일치 안 함)