적용 대상:Microsoft Fabric Preview에서 SQL Server 2025(17.x) 미리 보기
Azure SQL Database
Azure SQL Managed Instance SQL 데이터베이스
이 문서에서는 SQL Server에 대한 정규식을 소개합니다.
Note
미리 보기 기능으로, 이 문서에 제시된 기술에는 Microsoft Azure 미리 보기에 대한 보충 사용 약관이 적용됩니다.
정규 표현식, 또는 regex,는 텍스트에 대한 검색 패턴을 정의하는 문자 시퀀스입니다. Regex는 패턴 일치, 데이터 유효성 검사, 데이터 변환 및 쿼리를 비롯한 다양한 작업에 일반적으로 사용됩니다. 복잡한 데이터 작업을 검색, 조작 및 처리하는 유연하고 효율적인 방법을 제공합니다.
Note
정규식은 Always-up-to-date 업데이트 정책으로 구성된 Azure SQL Managed Instance에서 사용할 수 있습니다.
정규식의 이 구현은 RE2 정규식 라이브러리를 기반으로 합니다. 자세한 내용은 RE2 정규식 구문을 참조하세요.
지원되는 regex 함수:
Function | Description |
---|---|
REGEXP_LIKE | 텍스트 입력이 정규식 패턴과 일치하는지 여부를 나타내는 부울 값을 반환합니다. |
REGEXP_REPLACE | regex 패턴이 발견되는 대체 문자열로 대체된 수정된 소스 문자열을 반환합니다. |
REGEXP_SUBSTR | 정규식 패턴에 따라 문자열의 일부를 추출합니다. regex 패턴과 일치하는 부분 문자열의 N번째 항목을 반환합니다. |
REGEXP_INSTR | 제공된 옵션에 따라 일치하는 부분 문자열의 시작 또는 끝 위치를 반환합니다. |
REGEXP_COUNT | 문자열에서 regex 패턴이 발생하는 횟수를 반환합니다. |
REGEXP_MATCHES | 정규식 패턴과 문자열을 일치시키는 캡처된 부분 문자열의 테이블을 반환합니다. 일치하는 항목이 없으면 함수는 행을 반환하지 않습니다. |
REGEXP_SPLIT_TO_TABLE | regex 패턴으로 구분된 문자열 분할 테이블을 반환합니다. 패턴과 일치하지 않으면 함수는 문자열을 반환합니다. |
정규식은 특별한 의미와 함수가 있는 리터럴 문자와 메타 문자로 구성될 수 있습니다.
기본 정규식은 단일 리터럴 문자입니다. 문자는 메타문자를 제외하고 자체와 일치합니다. 메타 문자에는 *
, +
, ?
, (
)
또는 |
. 메타 문자와 일치하려면 백슬래시로 이스케이프합니다. 예를 들어 \*
리터럴 별표(*
) 문자와 일치합니다.
두 정규식을 변경하거나 연결하여 새 정규식을 구성할 수 있습니다. e1 이 s 와 일치하고 e2 가 t와 일치하면 e1 | e2 가 s 또는 t와 일치하고 e1e2 가 st와 일치합니다.
메타 문자 및 +
?
반복 연산자*
입니다. e1*
은 0개 이상의(가능한 다른) 문자열 시퀀스와 일치하며, 각 문자열은 e1과 일치하고 e1 +
은 하나 이상 일치합니다. e1?
는 0 또는 1과 일치합니다.
연산자 우선 순위(가장 약한 바인딩에서 가장 강력한 바인딩까지)는 다음과 같습니다. - 교대 - 연결 - 반복 연산자
명시적 괄호를 사용하여 산술 식과 같이 다른 의미를 적용할 수 있습니다. 몇 가지 예: ab|cd
같음 (ab)|(cd)
ab
; 은 .에 해당합니다 a(b)
.
RE2에서 허용하는 정규식 구문에 대한 자세한 내용은
RE2 정규식 구문입니다. 이 페이지에는 PCRE, Perl 및 Vim에서 허용하는 몇 가지 구문도 나열되어 있습니다.
허용되는 정규식 문자
단일 문자 식
단일 문자 표현의 종류 | Examples |
---|---|
모든 문자, 줄 바꿈(s=true)을 포함할 수 있습니다. | . |
character class | [xyz] |
부정 문자 클래스 | [^xyz] |
Perl 문자 클래스 | \d |
부정된 Perl 문자 클래스 | \D |
ASCII 문자 클래스 | [[:alpha:]] |
부정된 ASCII 문자 클래스 | [[:^alpha:]] |
유니코드 문자 클래스(한 글자 이름) | \pN |
유니코드 문자 클래스 | \p{Greek} |
부정된 유니코드 문자 클래스(한 글자 이름) | \PN |
부정된 유니코드 문자 클래스 | \P{Greek} |
합성물 | Description |
---|---|
xy |
x 다음에 y |
x | y |
x 또는 y(x 선호) |
반복 | Description |
---|---|
x* |
x 0개 이상, 더 선호 |
x+ |
하나 이상의 x, 더 선호 |
x? |
0 또는 1 x, 하나 선호 |
x{n,m} |
n 또는 n+1 또는 ... 또는 m x, 더 선호 |
x{n,} |
n 이상 x, 더 선호 |
x{n} |
정확히 n x |
x*? |
x 0개 이상, 더 적게 선호 |
x+? |
하나 이상의 x, 더 적은 선호 |
x?? |
0 또는 1 x, 0을 선호합니다. |
x{n,m}? |
n 또는 n+1 또는 ... 또는 m x, 더 적은 선호 |
x{n,}? |
n 또는 더 많은 x, 더 적은 선호 |
x{n}? |
정확히 n x |
Note
1,000개를 초과하는 최소 또는 최대 반복 수를 만드는 계산 양식 x{n,m}
x{n,}
및 x{n}
거부 양식입니다. 무제한 반복에는 이 제한이 적용되지 않습니다.
Perl 문자 클래스
다음 표에서는 현재 지원되는 Perl 문자 클래스를 나열합니다.
Perl 문자 클래스(모든 ASCII 전용) | Description |
---|---|
\d |
숫자 ([0-9] ) |
\D |
숫자가 아님 ( [^0-9] ) |
\s |
공백 ( [\t\n\f\r ] ) |
\S |
공백 아님( [^\t\n\f\r ] ) |
\w |
단어 문자( [0-9A-Za-z_] ) |
\W |
단어에 포함되지 않는 문자( [^0-9A-Za-z_] ) |
ASCII 문자 클래스
다음 표에서는 현재 지원되는 ASCII 문자 클래스를 나열합니다.
ASCII 문자 클래스 | Description |
---|---|
[[:alnum:]] |
영숫자( [0-9A-Za-z] ) |
[[:alpha:]] |
알파벳( [A-Za-z] ) |
[[:ascii:]] |
ASCII ( [\x00-\x7F] ) |
[[:blank:]] |
빈칸 ( [\t ] ) |
[[:cntrl:]] |
제어 ( [\x00-\x1F\x7F] ) |
[[:digit:]] |
숫자 ([0-9] ) |
[[:graph:]] |
그래픽( [!-~] 또는 [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~] ) |
[[:lower:]] |
소문자( [a-z] ) |
[[:print:]] |
인쇄 가능( [ -~] 또는 [ [:graph:]] ) |
[[:punct:]] |
문장 부호([!-/:-@[-\``{-~] ) |
[[:space:]] |
공백 ( [\t\n\v\f\r ] ) |
[[:upper:]] |
대문자( [A-Z] ) |
[[:word:]] |
단어 문자( [0-9A-Za-z_] ) |
[[:xdigit:]] |
16진수( [0-9A-Fa-f] ) |
리터럴 문자
- Letters
- Numbers
- Symbols
Metacharacters
빈 문자열 | Description |
---|---|
^ |
텍스트 또는 줄의 시작 부분(m=true ) |
$ |
텍스트 끝(예: \z 아님 \Z ) 또는 줄(m=true ) |
\A |
텍스트 시작 부분 |
\b |
ASCII 단어 경계(\w 한쪽 및 \W \A \z 다른 쪽) |
\B |
ASCII 단어 경계에 없음 |
\z |
텍스트 끝 |
Groupings
패턴의 캡처 그룹(하위 식)은 다음과 같습니다.
Grouping | Description |
---|---|
(re) |
번호가 매겨진 캡처링 그룹(하위 일치) |
(?P<name>re) |
명명된 캡처 그룹 및 번호 매기기 캡처 그룹(하위 일치) |
(?:re) |
비 캡처링 그룹 |
(?<flags>) |
현재 그룹 내에서 설정 <flags> , 비 캡처 |
(?<flags>:re) |
설정 <flags> 중 re ; 비 캡처링 그룹화 |
Flags
플래그를 사용하여 식 동작을 수정합니다. 다음은 그 예입니다.
Flag | Description |
---|---|
i |
대/소문자를 구분하지 않습니다(기본값 false ) |
m |
여러 줄 모드: ^ $ 시작/끝 텍스트 외에 시작/끝 선 일치(기본값 false ) |
s |
일치 \n 허용. (기본값false ) |
c |
대/소문자 구분(기본값 true ) |
이 구현은 RE2에 따른 정규식의 POSIX 표준을 지원하며, 대부분의 최신 정규식 엔진 및 도구와 호환되는 정규식 구문의 PCRE/PCRE2 버전을 지원합니다. 구문과 기능이 다른 POSIX, ANSI, Perl 및 PCRE와 같은 다양한 정규식 버전이 있습니다. 기본 정규식 엔진의 지원되는 구문 및 동작에 대한 자세한 내용은 정규식 라이브러리인 RE2를 참조하세요.
Requirements
- Azure Data Studio, SQL Server Management Studio 또는 Visual Studio Code와 같은 SQL 클라이언트 도구입니다.
- SQL 구문 및 쿼리에 대한 기본 지식입니다.
- 정규식 구문 및 개념에 대한 기본적인 이해입니다.
FAQ
regex 사용의 성능 영향은 무엇인가요?
Regex 쿼리는 regex 패턴의 복잡성, 텍스트 데이터의 크기 및 관련된 행 수에 따라 성능에 영향을 줄 수 있습니다. 실행 계획 및 통계를 사용하여 regex 쿼리의 성능을 모니터링하고 최적화할 수 있습니다.
알려진 문제, 동작 및 제한 사항
다음은 현재 이 미리 보기에서 지원되지 않는 항목입니다.
- LOB 데이터 형식(varchar(max) 또는 nvarchar(max))
string_expressions
은 다음 내장 함수에서 지원됩니다.REGEXP_LIKE
REGEXP_COUNT
REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR
그러나 이 지원은 최대 2MB의 입력 크기로 제한됩니다.
- LOB 데이터 형식은 TVF(regex 테이블 반환 함수)에서 지원되지 않습니다.
REGEXP_MATCHES
REGEXP_SPLIT_TO_TABLE
- 정규식 함수는 메모리 최적화 OLTP 테이블에서 지원되지 않습니다.