Sql 한글만 추출 - sql hangeulman chuchul

IT

MySQL 정규식(regexp)검사를 통한 한글포함여부 체크

Sql 한글만 추출 - sql hangeulman chuchul

2011. 3. 17. 18:33

일반적으로 비밀번호에 영어/숫자가 아닌 한글이 들어가는 경우는 프로그램에서 Filtering하지 못한 경우가 대부분이다.

이렇게 들어간 데이터를 검색하고자 할때 regexp를 사용해서 검사하면 모두 검색할수 있다.

SELECT * FROM MEMBER

WHERE USER_PASSWORD REGEXP '[가-힣]';

추가로 정규표현식을 공부하면 쉽게 알수 있는 거지만

한글로 시작하는 경우엔 '^[가-힣]'

모두가 한글로 구성된 경우만 검색할경우엔 '^[가-힣]+$'

숫자 혹은 문자로만 된 데이터를 찾아야 하는 일이 생겨 기록해봄

REGEXP_LIKE와 REGEXP_REPLACE 함수를 써서 정규식을 활용한 판별을 진행

(REGEXP는 다양한 종류와 옵션이 있지만 다루지 않음)


1. 정규식

  • [0-9] 숫자, [^0-9] 숫자 외의 것
  • 그 외의 다양한 정규표현식이 있으니 구글링 ㄱ

2. WHERE절에 쓰는 REGEXP_LIKE을 이용하여 데이터 조회하기

  • LIKE문 처럼 해당 정규식에 해당하는 데이터가 한자라도 포함되어 있으면 조회한다.
  • NOT을 사용하여 숫자를 포함한 것들을 제외하면 숫자가 하나도 포함되지 않은 데이터를 조회한다.
  • 반대로 NOT을 사용하여 숫자가 아닌 것을 포함한 모든 것을 제외하여 숫자로만 이루어진 데이터를 조회한다.
WHERE REGEXP_LIKE(컬럼, '[0-9]') //데이터에 숫자가 하나라도 포함되면 조회
WHERE REGEXP_LIKE(컬럼, '[^0-9]') //데이터에 숫자가 아닌 것이 하나라도 포함되면 조회

WHERE NOT REGEXP_LIKE(컬럼, '[0-9]') //데이터에 숫자가 하나라도 포함되면 제외: 숫자 없는 데이터
WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]') //데이터에 숫자가 아닌 것이 하나라도 포함되면 제외: 숫자

3. SELECT문 컬럼절에 REGEXP_REPLACE를 이용하여 데이터 조회하기

  • 해당 정규식에 해당하는 데이터를 제외하고 데이터를 조회한다.
  • [0-9]를 넣으면 데이터에서 숫자를 지우고 보여준다.
  • [^0-9]를 넣으면 반대로 데이터 속 숫자만 보여준다.
SELECT REGEXP_REPLACE(컬럼, '[0-9]') //문자만 추출
SELECT REGEXP_REPLACE(컬럼, '[^0-9]') //숫자만 추출

4. 끝

  • 숫자+문자로 된 데이터가 들어있는 컬럼을 '컬럼', 테이블을 '테이블'로 표기
SELECT 컬럼 FROM 테이블 WHERE REGEXP_LIKE(컬럼, '[^0-9]') //숫자 외의 것이 포함된 것
SELECT 컬럼 FROM 테이블 WHERE NOT REGEXP_LIKE(컬럼, '[^0-9]') //숫자외의 것이 포함된 것이 아닌 것 → Only 숫자
SELECT 컬럼 FROM 테이블 WHERE REGEXP_LIKE(컬럼, '[0-9]') //숫자가 포함된 것
SELECT 컬럼 FROM 테이블 WHERE NOT REGEXP_LIKE(컬럼, '[0-9]') //숫자가 포함된 것이 아닌 것 → Only 문자

SELECT REGEXP_REPLACE(컬럼, '[0-9]') FROM 테이블 //문자만 추출
SELECT REGEXP_REPLACE(컬럼, '[^0-9]') FROM 테이블 //숫자만 추출


with temp as  (
       select CLOB2 TXT from TB_TEMP_BLOB
     )
SELECT DISTINCT TO_CHAR(trim(regexp_substr(STR, '[가-힣]+', 1, level)))
  FROM (SELECT TXT STR FROM temp) t
CONNECT BY trim(regexp_substr(str, '[가-힣]+', 1, level)) IS NOT NULL

안녕하세요.

특정 장문 텍스트 로부터 한글만 추출하려고 하는데요.
한글을 모두 추출하고자 하는데
위 처럼 하니까 퍼포먼스가 너무 안나옵니다. 그렇게 긴 데이터도 아닌데요. level이 5800안쪽이 끝인데
LEVEL이 점점 올라가면서 처음부터 계속 개수를 셈해서 공간복잡도 때문에 그런가 싶었는데
그런데 제가 직접 regexp_substr 4번째 파라미터에 5000 이런식으로 값을 임의로 주면
0.3초도 안돼서 결과값이 나오는거보니 그러한 로직으로 조회되는 건 아닌 것 같습니다.

사이즈가 큰 텍스트파일도 빠르게 regexp_substr를 loop 돌릴 수 있는 좋은 방법 없을까요?

감사합니다.

Sql 한글만 추출 - sql hangeulman chuchul
@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


오라클(Oracle)에서 데이터 베이스 안에 테이블에 있는 한글 데이터를 찾아야 되는 경우가 종종 발생하곤 합니다. 머리로는 이해를 하는데, SQL 쿼리 문을 짜는데 막막한 경우에 아래의 쿼리문을 사용하여 찾을 수 있습니다.

이번 글은 오라클(Oracle) SQL 데이터 안에 한글 데이터 찾는 방법입니다.

REGEXP_LIKE(COLUMN 명, '[가-힝]')으로 한글이 있는 데이터 찾기

아래의 예제 코드처럼, 테이블에서 어떤 열에 한글 데이터가 있는지 찾고 싶은지 넣어주면 됩니다.

SELECT * OR 컬럼명
FROM 테이블명
WHERE REGEXP_LIKE(어떤 열에서 찾을건지, '[가-힝]')

예제 데이터

- A라는 테이블에서, NAME이라는 COLUMN 안에 한글이 있으면 모두 출력해라.

SELECT *
FROM A
WHERE REGEXP_LIKE(NAME, '[가-힝]')

이와 반대로, 영어만 있는 데이터를 찾고 싶으면 위의 코드에서 NOT만 붙여주면 됩니다.

SELECT * OR 컬럼명
FROM 테이블명
WHERE NOT REGEXP_LIKE(어떤 열에서 찾을건지, '[가-힝]')

이렇게, 한글 데이터가 있는 것들을 추출할 수 있습니다.

SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[가-힣]%' -- 한글 정규식
SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[A-Za-z]%' -- 영문 정규식

데이터가 한글인지 영문인지 판별하고 싶다면,  정규식을 이용하여 LIKE 문으로 찾으면 된다.

정규식 [가-힣] 은 한글 [가]에서 [힣] 까지 포함된 글자가 있다면 매칭된다.

정규식 [A-Za-z] 도 마찬가지로 대문자 A에서 Z 까지, 소문자 a에서 z 까지 매칭된다.

관심있을 만한 주제

  • �Ϲ�
    ȸ��
  • ���
    ȸ��

  • Mysql/Oracle/Query/DB �������亯
  • HOME > Q&A > Mysql/Oracle/Query/DB �������亯
  • �˻��������

����� �ѱ��� ���� �ִ� �÷����� �ѱ۸� ������ �� �������?
�۾���
Sql 한글만 추출 - sql hangeulman chuchul
Sql 한글만 추출 - sql hangeulman chuchul
���ٱ׷���
�� ¥11-12-21 13:10 �� ȸ4169
����URL https://www.phpschool.com/link/qna_db/182527 ����

SyntaxHighlight�� ����

���� ��� 'Sakura ������' ��� �����Ͱ� �� �ʵ�ȿ� �ִٰ� �����ϸ�,
���⿡�� Select�� �ҷ��� �� '������'��� �ѱ� �ܾ ������ �ϰ� �ͽ��ϴ�.
�׷��� � �Լ��� ���� ������ �𸣰ڳ׿�.
����� �������?

  • �亯ä����
    Sql 한글만 추출 - sql hangeulman chuchul
    40%
  • ��õ 0 �� ������ ������ �峪��?
  • ����õ 0 �� ������ ������ �ȵ���.

  • �˻��������
  • �ű� ��õ �亯 ��ȸ
  • �Խù� 871��
    Sql 한글만 추출 - sql hangeulman chuchul

  • 0��õ 4�亯���� 29��ȸ

  • 0��õ 5�亯���� 136��ȸ

  • 0��õ 1�亯�Ϸ� 135��ȸ

  • 0��õ 4�亯�Ϸ� 214��ȸ

  • 0��õ 2�亯���� 272��ȸ

  • 0��õ 2�亯�Ϸ� 251��ȸ

  • 0��õ 5�亯�Ϸ� 234��ȸ

  • 0��õ 4�亯���� 246��ȸ

    mysql select �� Ư������ �˻��ϱ� ���� �帮�ڽ��ϴ�. num �÷� 4 4,9,10 1,3,4 1,4,14 1,14,26 �̷������� ���� �� ������ 4�� �� �ִ� 1,2,3,4 ��°�� ����ϰ� �ϰ� �ͽ��ϴ� �� 14�� �ִ°� ���� �ϰ� �ͽ��ϴ�. �̷����� select���� �Ʒ� �������� ��� �� ¥�� �ұ��?

    HIT Source÷��

    Sql 한글만 추출 - sql hangeulman chuchul
    Sql 한글만 추출 - sql hangeulman chuchul
    developerDG��2022-06-07 16:42:19

  • 0��õ 0�̴亯 266��ȸ

  • 0��õ 5�亯�Ϸ� 369��ȸ

  • 0��õ 4�亯�Ϸ� 232��ȸ

  • 0��õ 22�亯�Ϸ� 304��ȸ

  • 0��õ 1�亯�Ϸ� 266��ȸ

  • 0��õ 1�亯���� 399��ȸ

  • 0��õ 1�亯���� 478��ȸ

  • 0��õ 3�亯�Ϸ� 711��ȸ

  • 0��õ 2�亯�Ϸ� 466��ȸ

  • 0��õ 2�亯�Ϸ� 292��ȸ

  • 0��õ 0�̴亯 511��ȸ

  • 0��õ 2�亯�Ϸ� 359��ȸ