패턴 일치 및 텍스트 추출

완료됨

SQL Server 2025는 새로운 정규식(REGEXP) 함수를 추가하고 함수를 SUBSTRING 향상시켜 구조화된 텍스트 작업을 간소화합니다. 이러한 추가 기능을 통해 개발자는 클라이언트 쪽 스크립팅 또는 CLR 함수를 사용하지 않고도 유연한 텍스트 검색을 수행하고, 복잡한 패턴을 추출하고, T-SQL에서 직접 데이터를 정리하거나 변환할 수 있습니다.

패턴 일치 및 텍스트 추출 함수 개요

새로운 REGEXP 함수 제품군은 SQL Server 내에서 직접 정규식 평가를 지원합니다. 각 함수는 특정 패턴 기반 텍스트 작업을 사용하도록 설정합니다.

REGEXP_LIKE

문자열이 정규식 패턴과 일치하는지 확인합니다. 일치하는 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다.

REGEXP_SUBSTR

정규식 패턴과 일치하는 첫 번째 부분 문자열을 추출합니다. 전화 번호, 날짜 또는 전자 메일 주소와 같은 특정 정보를 꺼내는 데 유용합니다.

REGEXP_REPLACE

문자열에서 패턴을 검색하고 패턴과 일치하는 모든 항목을 바꿉니다. 데이터 정리 및 서식 지정에 사용할 수 있습니다.

REGEXP_INSTR

지정된 텍스트 내의 패턴과 일치하는 첫 번째 부분 문자열의 시작 위치를 반환합니다. 구조화된 텍스트에서 키 표식을 찾는 데 적합합니다.

REGEXP_COUNT

지정된 문자열에서 정규식 패턴의 일치 항목 수를 계산합니다. 이 개수는 텍스트의 숫자, 단어 또는 기호 계산과 같은 패턴 빈도를 측정해야 하는 경우에 유용합니다.

REGEXP_MATCHES

정규식 패턴과 일치하는 모든 하위 문자열을 테이블 결과로 반환합니다. 여러 번의 일치 항목을 캡처할 때, 단일 문자열에서 첫 번째 일치만 필요한 것이 아닐 경우 사용합니다.

REGEXP_SPLIT_TO_TABLE

정규식 구분 기호를 사용하여 문자열을 여러 행으로 분할합니다.

SUBSTRING 향상

이제 함수는 SUBSTRING 선택적 길이 매개 변수를 지원합니다. 생략하면 지정된 시작 위치에서 문자열 끝까지 자동으로 추출되므로 수동 LEN() 계산이 필요하지 않습니다.

이러한 기능을 함께 사용하면 간결하고 읽기 쉬운 T-SQL을 사용하여 SQL Server 2025에서 직접 텍스트 패턴을 검색, 추출 및 조작할 수 있습니다.


예제 시나리오: 연락처 데이터 추출 및 정리

마케팅 팀은 이름이 지정된 MessageText열에 고객 메시지 데이터베이스를 유지 관리합니다. 많은 항목에는 다양한 형식의 전화 번호가 포함됩니다. 각 메시지에서 첫 번째 전화 번호를 추출하고 표준 형식으로 정규화하며 잘못된 전화 번호가 포함된 메시지를 식별해야 합니다.

샘플 데이터

다음과 같은 샘플 데이터가 테이블에 있다고 CustomerMessages가정해 보겠습니다.

MessageID 메시지 텍스트
1 "(713) 555-1298 또는 office 555-8811로 전화하세요."
2 "내게 연락: +1-832-555-7821 감사합니다!"
3 "내 번호는 713-555-9876 ext. 33"
4 "아직 전화 나열되지 않았습니다."

쿼리: 식별, 추출 및 표준화

-- Extract the first phone number pattern and format it consistently
SELECT MessageID,
       REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') AS RawNumber,
       REGEXP_REPLACE(
           REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}'),
           '\D', ''
       ) AS DigitsOnly,
       CASE 
           WHEN REGEXP_LIKE(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') = 1 THEN 'Valid'
           ELSE 'Missing'
       END AS PhoneStatus
FROM dbo.CustomerMessages;

결과

MessageID RawNumber DigitsOnly PhoneStatus
1 (713) 555-1298 7135551298 유효
2 +1-832-555-7821 18325557821 유효
3 713-555-9876 7135559876 유효
4 없음 없음 없음

이 예제에서는 REGEXP_SUBSTR을 사용하여 일치하는 첫 번째 패턴을 추출하고, REGEXP_REPLACE을 통해 숫자가 아닌 문자를 제거하며, REGEXP_LIKE를 이용해 유효한 숫자를 확인합니다. 이 쿼리는 전화 번호를 T-SQL에서 직접 일관된 숫자 전용 형식으로 표준화합니다.


예제 2: REGEXP_SPLIT_TO_TABLE 및 SUBSTRING을 사용하여 데이터 분할

또 다른 테이블인 CustomerFeedback고객 관심사를 설명하는 쉼표로 구분된 태그를 저장한다고 가정해 보겠습니다. 이를 개별 행으로 구분하고 빠른 인덱싱을 위해 첫 번째 키워드를 추출하려고 합니다.

SELECT FeedbackID,
       value AS Tag,
       SUBSTRING(value, 1) AS FirstWord
FROM CustomerFeedback
CROSS APPLY REGEXP_SPLIT_TO_TABLE(Tags, '\s*,\s*');

이 쿼리는 길이를 지정하지 않고 새 SUBSTRING 동작을 사용하여 시작 위치에서 나머지 텍스트 전체를 추출하는 동안 각 쉼표로 구분된 문자열을 행으로 분할합니다.

결과

FeedbackID 태그 FirstWord
1 여행하다 여행하다
1 사진술 사진술
2 하이킹 하이킹
2 캠핑 캠핑

요약

SQL Server 2025의 새로운 REGEXP 함수와 향상된 SUBSTRING 함수는 네이티브 패턴 일치 및 텍스트 추출 기능을 제공합니다. 이러한 추가 기능을 사용하면 외부 문자열 처리가 필요하지 않으므로 데이터베이스 엔진 내에서 텍스트 데이터를 보다 쉽게 정리, 구문 분석 및 분석할 수 있습니다. 개발자는 이러한 도구를 사용하여 ETL 파이프라인을 간소화하고, 데이터 품질을 개선하며, T-SQL에서 직접 고급 텍스트 기반 분석을 사용하도록 설정할 수 있습니다.