not set

오라클 한글 데이타 검색 본문

Database/query

오라클 한글 데이타 검색

다크곰 2013. 8. 14. 15:17
http://www.oracleclub.com/article/59867

출처 오라클클럽 

마농님 댓글


1
2
3
4
5
6
7
8
9
10
11
12
-- 명확하게 한글만을 제외하기는 사실상 힘들듯 하구요.
-- 여러가지 대체 방안이 있을 듯 합니다.
-- 1. 싱글바이트문자만 뽑기 --
 WHERE LENGTH(funa_kor) = LENGTHB(funa_kor)
 WHERE funa_kor = ASCIISTR(funa_kor)
-- 2. 영문 및 공백만 뽑기 --
 WHERE REGEXP_LIKE(funa_kor, '^([a-z A-Z]+)$')
 WHERE TRANSLATE(funa_kor
       , '$abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'
       , '$') IS NOT NULL
-- 3. 한글 제외(명확한것은 아님) --
 WHERE NOT REGEXP_LIKE(funa_kor, '[가-힝]')




WITH t AS 

SELECT 'manon94' id FROM dual 

UNION ALL SELECT '가나다라' FROM dual 

UNION ALL SELECT '가나다라(aaa)' FROM dual 

UNION ALL SELECT 'aaa_가나다라' FROM dual 

UNION ALL SELECT 'ㅁㅁㅁ' FROM dual 

UNION ALL SELECT 'aaa123' FROM dual 

UNION ALL SELECT '1234' FROM dual 

UNION ALL SELECT ' 1 2 3 4 ' FROM dual 

UNION ALL SELECT ' 1 ㄱ 2 ㄴ 3 ㄷ 4 ' FROM dual 

UNION ALL SELECT '궵런디ㅏㅓㄹ' FROM dual 

UNION ALL SELECT '스꾸에~~뷁뷁뷁' FROM dual 

SELECT * FROM t 

WHERE REGEXP_LIKE(id, '[ㄱ-힣]') 

--꼬부랑말이나 숫자가 있다면 나와주세요! 

WITH t AS 

SELECT 'manon94' id FROM dual 

UNION ALL SELECT '가나다라' FROM dual 

UNION ALL SELECT '가나다라(aaa)' FROM dual 

UNION ALL SELECT 'aaa_가나다라' FROM dual 

UNION ALL SELECT 'ㅁㅁㅁ' FROM dual 

UNION ALL SELECT 'aaa123' FROM dual 

UNION ALL SELECT '1234' FROM dual 

UNION ALL SELECT ' 1 2 3 4 ' FROM dual 

UNION ALL SELECT ' 1 ㄱ 2 ㄴ 3 ㄷ 4 ' FROM dual 

UNION ALL SELECT '궵런디ㅏㅓㄹ' FROM dual 

UNION ALL SELECT '스꾸에~~뷁뷁뷁' FROM dual 

SELECT * FROM t 

WHERE REGEXP_LIKE(id, '[a-zA-Z0-9]') 


--REGEXP_INSTR 함수

SELECT * 

  FROM (

        SELECT 1, 'A SOMETHING LIKE 154 ST.' TEXT

          FROM DUAL

         UNION ALL

         SELECT 2, 'B SomeTHING LIKE a-5654 st.' TEXT

           FROM DUAL

         UNION ALL

         SELECT 3, 'that Is 23-4 ST.' TEXT

           FROM DUAL

       )

 WHERE REGEXP_INSTR(TEXT, '[0-3,t]') = 1

;

-- 0~3 그리고 t가 첫번째 글자에 있는 문자열을 찾아준다.


--REGEXP_LIKE 함수

SELECT * 

  FROM (

        SELECT 4, 123456 TEXT

          FROM DUAL

       )

 WHERE REGEXP_LIKE(TEXT, '[[:digit:]]')

;

-- [[:digit:]] : 숫자인가

-- [^[:digit:]] : 숫자가 아닌가

-- ^ 를 표현식안에쓰게되면 NOT (부정)의 의미가된다.

-- 주의점

-- ADB012 는 숫자도아니고 문자도아닌게된다. 위의조건으로 검색을하게되면 전부 조건에 걸리게된다.

-- 숫자+문자 일경우 조심해야한단말쌈~



SELECT * 

  FROM (

        SELECT REGEXP_REPLACE(content, '<[^>]*>', ' ') AS CONTENT

          FROM AAAA

       ) 

 WHERE REGEXP_LIKE(CONTENT , '[^ -~]');

;

'Database > query' 카테고리의 다른 글

오라클 가로를 세로로  (0) 2013.08.27
ORACLE MERGE INTO  (0) 2013.08.27
ORACLE SELECT UPDATE 예제  (0) 2013.03.12
ORACLE 권한 보기  (0) 2012.12.13
_ 언더바가 포함된 문자 검색할때.  (0) 2012.04.27