Search

2015년 12월 22일 화요일

[Database] [MSSQL] 숫자가 아닌 첫 번째 스트링 문자를 찾아서 추출하기.

* 컬럼에서 숫자 값만 필요한데, 어느 행에 스트링이 포함되어 있어서 골치아플 때가 있다.
* 그럴 경우, 첫 번째 스트링이 있는 문자열을 추출해, 값이 있는 행만 다시 추려내면 편하다.
* 참조 : http://blog.sqlauthority.com/2012/10/14/sql-server-find-first-non-numeric-character-from-string/


* 컬럼값에 대한 첫번째 스트링을 찾아서 보여주는 쿼리는 다음과 같다. 예를 들어, A_Table에 Column_1을 대상으로 찾아보자.

SELECT PATINDEX('%[^0-9]%',Column_1) 'Position of NonNumeric Character',
       SUBSTRING(Column_1,PATINDEX('%[^0-9]%',Column_1),1) 'NonNumeric Character',
       Column_1 'Original Character'
FROM A_Table



* 조금 응용하여, 고객 테이블(Customer)에 전화번호(Telephone_NO)와 같은 컬럼이 있는데, int나 numeric형이 아니어서 간혹 숫자가 아닌 값이 들어가게 된 경우를 생각해보자.
* 그 때 숫자 외의 값이 하나라도 들어간 행을 모두 추출하는 쿼리는 다음과 같다.

SELECT t.Telephone_NO
FROM (
      SELECT Telephone_NO,
          PATINDEX('%[^0-9]%',Telephone_NO) as StringFound
      FROM Customer
      ) as t
WHERE StringFound is not NULL


댓글 없음:

댓글 쓰기