질의작성

오류데이타검증 - 숫자 이외의 데이타 확인하는 방법

by 권호일 posted Jan 17, 2013
일반적으로 숫자를 사용하는 컬럼은 int, numeric, double 등의 데이타 타입을 사용합니다.

그러나, 간혹 DB설계자가 숫자타입의 컬럼을 문자형으로 설계하는 경우가 있습니다.
이럴 경우에 문자타입의 컬럼을 숫자타입으로 변경하기를 권장합니다.

그러나, 테이블에 많은양의 데이타가 있을 경우에는 오류데이타(문자데이타, 특수문자 등)를 걸러내야 합니다.

아래의 내용은 특정컬럼 내에서 숫자 이외의 값이 있는 데이타를 select 하는 예제이며,
자료변환 또는 오류데이타 검증 등에 참고하면 됩니다.

테스트 테이블 생성 및 데이타 입력

DROP TABLE tbl;


CREATE TABLE tbl ( col1 int, col2 VARCHAR(100) );


INSERT INTO tbl (col1, col2 ) VALUES ( 1,'1');

INSERT INTO tbl (col1, col2 ) VALUES ( 2,'7');

INSERT INTO tbl (col1, col2 ) VALUES ( 3,'8');

INSERT INTO tbl (col1, col2 ) VALUES ( 4,'1,000');

INSERT INTO tbl (col1, col2 ) VALUES ( 5,'1,200,300');

INSERT INTO tbl (col1, col2 ) VALUES ( 6,' ');

INSERT INTO tbl (col1, col2 ) VALUES ( 7,'');

INSERT INTO tbl (col1, col2 ) VALUES ( 8,'0');

INSERT INTO tbl (col1, col2 ) VALUES ( 9,'!');

INSERT INTO tbl (col1, col2 ) VALUES (10,'^');

INSERT INTO tbl (col1, col2 ) VALUES (11,'&');

INSERT INTO tbl (col1, col2 ) VALUES (12,'ㄱ');

INSERT INTO tbl (col1, col2 ) VALUES (13,'x');

INSERT INTO tbl (col1, col2 ) VALUES (14,'x12');

INSERT INTO tbl (col1, col2 ) VALUES (15,'ㄱ123');

INSERT INTO tbl (col1, col2 ) VALUES (16,'123ㄱ098');

INSERT INTO tbl (col1, col2 ) VALUES (17,'123.0'); 


--정수 외의 데이타를 확인(소수점 데이타도 오류데이타)

SELECT * 

FROM tbl 

WHERE (col2 REGEXP '[^0123456789]') = 1;



--정수, 실수 외의 데이타를 확인

SELECT * 

FROM tbl 

WHERE (col2 REGEXP '[^0123456789.]') = 1;







Articles

1 2 3 4 5 6 7 8 9 10