메뉴 건너뛰기

조회 수 579 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

SQL Server에서 데이터 값에 문자와 숫자가 같이 있는 경우 숫자 또는 문자만 추출하고 싶은 경우가 있습니다.

TRANSLATE 함수를 사용하여 추출할 수도 있지만 SQL Server 2017부터 사용 가능한 함수입니다.

TRANSLATE 함수를 사용 못하는 경우에 숫자나 문자만 추출하는 방법을 알아보겠습니다.

사용할 함수는 REPLACE와 PATINDEX입니다.

우선 REPLACE와 PATINDEX 함수가 어떤 것인지 간단하게 살펴보겠습니다.

 

  REPLACE

지정한 문자열의 값을 다른 문자열로 변환.

 

  PATINDEX

패턴과 매칭 된 처음 위치를 반환. 패턴을 찾지 못한 경우에는 0을 반환.

정규 표현식처럼 사용.

와일드카드도 사용 가능.

 

SELECT PatIndex('%[0-9]%', '(123)4A56-7B89c0')

(123)4A56-7B89c0 이라는 문자열에서 처음에 매칭 된 숫자의 위치를 반환해줍니다.

숫자 1이 가장 앞에 있기 때문에 1과 매칭이 되고 1은 문자열 2번째에 위치하고 있기 때문에 반환 값은 2가 됩니다.

 

REPLACE와 PATINDEX 함수를 사용하여 숫자만 추출해보도록 하겠습니다.

DECLARE @telnum varchar(max) = '(123)4A56-7B89c0'

WHILE PatIndex('%[^0-9]%', @telnum) > 0
    BEGIN
        SELECT @telnum = Replace(@telnum, Substring(@telnum, PatIndex('%[^0-9]%',@telnum) , 1), '')

    END
SELECT @telnum

 

결과

1234567890

 

숫자만 출력되었습니다.

문자열의 마지막까지 확인을 해야 하기 때문에 반복문인 WHILE문을 사용하였습니다.

 

이번에는 문자만 추출해보도록 하겠습니다.

DECLARE @telnum varchar(max) = '(123)4A56-7B89c0'

WHILE PatIndex('%[^a-z]%', @telnum) > 0
    BEGIN
        SELECT @telnum = Replace(@telnum, Substring(@telnum, PatIndex('%[^a-z]%',@telnum) , 1), '')

    END
SELECT @telnum

 

결과

ABc

 

문자만 추출되었습니다.

변경한 곳은 정규식 부분만입니다.

자주 사용해야 하는 경우라면 함수로 만들어두는 것도 좋습니다.


List of Articles
번호 제목 날짜 조회 수
30 MSSQL EXISTS로 서브 쿼리 작성 방법 예제 file 2022.02.16 19
29 MSSQL IN 다중조건 사용 방법 2022.02.16 165
28 MSSQL 테이블 작성 인덱스 생성 하기 file 2022.02.16 74
27 MSSQL CLUSTERED INDEX와 NONCLUSTERED INDEX 차이점 2022.02.16 17
26 MSSQL Primary Key 컬럼 속성 변경 안될때 해결 방법 file 2022.02.16 27
25 MSSQL 컬럼 추가, 변경, 삭제 ALTER 사용 방법 예제 file 2022.02.16 18
24 MSSQL 컬럼 중간에 추가하는 방법 file 2022.02.16 119
23 MSSQL RANK와 DENSE_RANK 랭크 함수 차이 예제 file 2022.02.16 12
22 MSSQL ROW_NUMBER로 성적 순위 설정 방법 예제 file 2022.02.16 5
21 MSSQL 성적 순위 설정 RANK 사용 방법 예제 file 2022.02.14 14
20 MSSQL 간단한 만나이 계산하기 DATEDIFF 사용 예제 file 2022.02.14 222
19 MSSQL 현재 시간 취득하는 여러 가지 방법 file 2022.02.14 15
18 MSSQL NULL값 변환 (NVL, ISNULL, CASE) 사용 방법 예 file 2022.02.14 151
17 MSSQL 공백값과 NULL값 동시에 체크 하는 방법 file 2022.02.14 850
16 MSSQL 앞에 숫자0 채우기 FORMAT 사용 2022.02.14 62
15 MSSQL 숫자 3자리 콤마 넣기 또는 삭제하기 2022.02.14 79
14 MSSQL MERGE사용 안하고 있으면 UPDATE 없으면 INSERT 하기 2022.02.14 57
13 MSSQL MERGE 테이블에 있으면 업데이트 없으면 추가 하기 2022.02.14 8
» MSSQL 문자열에서 숫자 또는 문자만 추출하기 REPLACE, PATINDEX 2022.02.14 579
11 MSSQL 모든 테이블 사용하고 있는 용량 확인 방법 2022.02.14 46
Board Pagination Prev 1 2 Next
/ 2

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved