마리아 db를 사용하다가 코드값인데 영문과 숫자가 섞여있고 숫자만 써야할 일이 생긴다. 예를들어 코드값이 AA123, BB1233,CDE2345 이렇게 영문,숫자가 섞여있을때 숫자가 1000 이하인것들만 추출할 경우이다.
이런식으로 regexp_replace 함수를 쓰면 된다. 부서코드에 영문 [a-z] 이 있으면 '' 공백으로 바꾼다. 바꾸고 나서 값이 없는 경우도 있으니 공백만 있는경우 '' 는 뺀다. 참고로.. 정규식을 통해 한글, 영문, 특문, 숫자를 제거 하는 방법입니다. 1. 한글제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[가-힣]','') AS remove_digits; 2. 숫자제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[0-9]','') AS remove_digits; 3. 영문제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[a-z]','') AS remove_digits; 4. 한글과 특수문자 ( ) 제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[가-힣()]','') AS remove_digits; 일반적으로 비밀번호에 영어/숫자가 아닌 한글이 들어가는 경우는 프로그램에서 Filtering하지 못한 경우가 대부분이다. 이렇게 들어간 데이터를 검색하고자 할때 regexp를 사용해서 검사하면 모두 검색할수 있다. SELECT * FROM MEMBER WHERE USER_ID REGEXP '[가-힣]'; 추가로 정규표현식을 공부하면 쉽게 알수 있는 거지만 한글로 시작하는 경우엔 '^[가-힣]' 모두가 한글로 구성된 경우만 검색할경우엔 '^[가-힣]+$' *개요 1,11,111,2,22,3,.... A1,A11,A111,A2,..... 순으로 정렬됨. 제대로 정렬해보도록 하자. * 한글-영어-숫자 순으로 정렬 SELECT A.MNG_NUM, * 문자열을 숫자로 바꿔 정렬하기 (CHAR인 숫자 정렬) SELECT CAST(A.MNG_NUM AS UNSIGNED) CASTMNGNUM FROM MYTABLE A - 이 방법은 약간 문제가 있는데, 숫자는 온전히 숫자로 바뀌지만 문자로 시작하는 경우 0으로 바뀐다는 점. * 문자열로부터 숫자만 추출하기 MySQL 8.0 이상이라면 REGEXP_REPLACE() 을 사용 가능하므로 쉽게 만들 수 있다. 하지만 안된다면 하지만 문자열을 REVERSE() 로 뒤집어서 추출후 다시 뒤집는 꼼수로 가능하다. SELECT SUBSTR(A, 1, LENGTH(A)-1), LENGTH(A) FROM (SELECT REVERSE(CAST(REVERSE(concat('abc1234','1')) AS UNSIGNED)) AS A) AS TBLA 여기서 CONCAT 이 있는 이유는 A30 A30 위처럼 SELECT 를 한번 더 감싸야함. 참고 * 문자열로부터 문자(한글 영어) 추출하기 반응형 정규식을 통해 한글, 영문, 특문, 숫자를 제거 하는 방법입니다. 1. 한글제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[가-힣]','') AS remove_digits; 2. 숫자제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[0-9]','') AS remove_digits; 3. 영문제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[a-z]','') AS remove_digits; 4. 한글과 특수문자 ( ) 제거 - SELECT REGEXP_REPLACE('ab12cd한글(테스트)','[가-힣()]','') AS remove_digits; 반응형 공유하기 게시글 관리 구독하기전디버거의 코딩이야기저작자표시 'Database' 카테고리의 다른 글오라클 SET UNUSED (0)2019.01.25오라클 락 조회 및 해제 방법 (0)2019.01.24오라클 로그인된 계정의 모든 테이블 삭제 (0)2018.11.05ORA-12560: TNS:프로토콜 어댑터 오류 (2)2018.11.05Toad for oracle Explain Plan (실행계획) 보는방법 (0)2018.10.11 |