_ (와일드카드 - 문자 하나와 일치)(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
밑줄 문자 _를 사용하여 문자열 비교 작업에서 패턴 일치와 같은 LIKE
PATINDEX
단일 문자를 일치시킵니다.
예제
A: 간단한 예
다음 예제에서는 문자 m
로 시작하고 문자 d
를 세 번째 문자로 가진 모든 데이터베이스 이름을 반환합니다. 밑줄 문자는 이름의 두 번째 문자가 임의의 문자일 수 있음을 지정합니다. model
및 msdb
데이터베이스는 이 조건을 충족합니다. 데이터베이스는 master
그렇지 않습니다.
SELECT name FROM sys.databases
WHERE name LIKE 'm_d%';
결과 집합은 다음과 같습니다.
name
-----
model
msdb
이 조건을 충족하는 추가 데이터베이스가 있을 수 있습니다.
여러 개의 밑줄을 사용하여 여러 문자를 나타낼 수 있습니다. 두 개의 LIKE
밑 'm__%
줄을 포함하도록 조건을 변경하면 결과에 master 데이터베이스가 포함됩니다.
B: 복잡한 예
다음 예제에서는 _연산자를 사용하여 Person
테이블에서 an
으로 끝나는 3개 문자로 된 이름을 가진 모든 사람을 찾습니다.
-- USE AdventureWorks2022;
SELECT FirstName, LastName
FROM Person.Person
WHERE FirstName LIKE '_an'
ORDER BY FirstName;
C: 밑줄 문자 이스케이핑
다음 예제에서는 db_owner
및 db_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)
%(와일드카드 - 일치하는 문자)
[ ](와일드카드 - 하나 이상의 문자 일치)
[^](와일드카드 - 하나 이상의 문자 일치 안 함)