Background Image
조회 수 1323 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

CUBRID에서 정규표현식을  사용하기 위해서 REGEX 기능을 제공한다.

해당 식의 결과 값은 1 또는 0 으로 일치 또는 불일치로 표현된다.


자세한 내용은 다음의 링크를 참고 : https://www.cubrid.org/manual/ko/9.3.0/sql/function/condition_fn.html?highlight=regex#regexp-rlike


패턴이 일치하고 불일치하는지 찾아 낼수는 있으나 해당 패턴을 이용해서 치환을 하기에는 어렵다.


CUBRID에서는 Java SP(Function/Stored Procedure)기능이 있으므로 해당 기능을 활용해서 치환하는 펑션을 생성 하도록 하겠다.


일단 Java Funcation 용 간단한 java 를 짜서 컴파일한다.


클래스명은 RegexLib 로 만들고 메소드명은 ReplaceAll이라고 만든다.


import java.util.regex.Matcher;                                                                                                                            
import java.util.regex.Pattern;

public class RegexLib {
    public static String ReplaceAll(String p_data, String p_regex, String p_replace) {
        Pattern ptrn = null;
        Matcher mtch = null;
        String rst = null;

        if(p_regex.isEmpty()) {
            ptrn = Pattern.compile("");
        } else {
            ptrn = Pattern.compile(p_regex);
        }


        try {
            mtch = ptrn.matcher(p_data);
            rst = mtch.replaceAll(p_replace);
        } catch (Exception e) {
            return p_data;
        }

        return rst;
    }
}


해당 코드를 컴파일 한다음 loadjava 유틸리티를 이용해서 필요한 데이터베이스에 class 파일을 load 후 사용하면 된다.


$ loadjava 데이터베이스명 RegexLib.class 


이제 해당 class를 Function으로 등록 해 보자. csql 또는 CM(cubrid manger)로 해당 데이터베이스에 접속한 후

CREATE FUNCTION RegexReplaceAll(p_data varchar, p_regex varchar, p_replace varchar) RETURN VARCHAR

AS LANGUAGE JAVA

NAME 'RegexLib.ReplaceAll(java.lang.String, java.lang.String, java.lang.String) return java.lang.String';


RegexReplaceAll(원문, 패턴, 패턴치환문자열) 로 만들었다.

 

이제 테스트를 해 보자.

csql> create table tst(a varchar(200));

Execute OK. (0.071368 sec) Committed.


1 command(s) successfully processed.

csql> insert into tst values

csql> ('2015 특수교육대상학생의 사회과 교수.학습 지도'),

csql> ('2015 특수교육대상학생의 과학과 교수.학습지도'),

csql> ('2015 장애학생 이해와 통합학급 운영'),

csql> ('2015 치료교육 표시과목 변경 직무연수'),

csql> ('2015 특수교육교원 역량강화'),

csql> ('2015 장애학생 진로.직업교육'),

csql> ('미래를 열어주는 장애학생의 진로_직업교육(전문과정)'),

csql> ('2014-장애학생 이해와 통합학급 운영2'),

csql> ('2014-장애학생 이해와 통합학급운영'),

csql> ('2014-특수교육대상학생의 국어과 교수 · 학습지도')

csql> ;

10 rows affected. (0.000916 sec) Committed.

csql> select RegexReplaceAll(a, '^[[0-9년_-]|[ ]]+', '') from tst;

=== <Result of SELECT Command in Line 1> ===

  RegexReplaceAll(a, '^[[0-9년_-]|[ ]]+', '')
======================
  '특수교육대상학생의 사회과 교수.학습 지도'
  '특수교육대상학생의 과학과 교수.학습지도'
  '장애학생 이해와 통합학급 운영'
  '치료교육 표시과목 변경 직무연수'
  '특수교육교원 역량강화'
  '장애학생 진로.직업교육'
  '미래를 열어주는 장애학생의 진로_직업교육(전문과정)'
  '장애학생 이해와 통합학급 운영2'
  '장애학생 이해와 통합학급운영'
  '특수교육대상학생의 국어과 교수 · 학습지도'

10 rows selected. (0.011080 sec) Committed.


해당 기능이 잘 동작함이 확인 되었다.


이처럼 CUBRID에서는 Java Sp를 이용하면 Java로 구현가능한 대부분을 만들 수 있다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
56 응용개발 패키지 형태로 생성된 JAVA class를 JAVA SP에서 사용하기 손승일 2010.02.26 18375
55 응용개발 전체 레코드 개수 확인하는 SP 김승훈 2015.05.07 14724
54 응용개발 응용프로그램에서 질의 처리시 commit/rollback 처리 문제 admin 2008.11.21 21597
53 응용개발 윈도우 환경에서 PHP 모듈 로드를 못 할 경우 해결법 3 Prototype 2009.11.26 22451
52 응용개발 용량이 큰 데이터를 질의로 저장하는 방법 남재우 2009.11.26 12117
51 응용개발 오라클 to CUBRID로 마이그레이션 수행 시 주의사항 cubebridge 2012.11.12 16640
50 응용개발 그루비로 큐브리드 함수(or 프로시저) 만들기 by 행복개발자(cyberuls) 시난 2009.07.14 18753
49 응용개발 weblogic 8.1 에 CUBRID Connection Pool, DataSource 설정 방법 file 웁쓰 2009.07.01 66306
48 응용개발 utf-8로 저장된 한글이 JAVA SP를 사용하여 읽어 오면 깨져 보일때 손승일 2012.03.10 20795
47 응용개발 tomcat 5.5 버전 이상에서 dbcp(커넥션 풀링) 설정법 admin 2008.11.21 28527
46 응용개발 php에서 serialize/unserialize 사용 시 주의할 점 시난 2009.12.29 31626
45 응용개발 maven에서 CUBRID JDBC Driver 추가하기 file 김승훈 2015.12.09 8931
44 응용개발 loadjava 사용 시 inner class 로딩은 어떻게? admin 2008.11.21 27450
43 응용개발 jdbc에서 질의 플랜정보 보는 방법 손승일 2009.04.15 15840
42 응용개발 jdbc에서 bit 데이터 타입 사용하기 손승일 2009.04.11 15013
41 응용개발 embedded sql 에서 char 사용시 주의 사항 admin 2008.11.21 19008
40 응용개발 cubrid_fetch_all() php 함수로 만들어 사용하기 file 시난 2009.06.30 18619
39 응용개발 cubrid-php module r2.2 이상 버젼에서 configure시에 주의사항 seongjoon 2010.07.20 14007
38 응용개발 Windows에서 32bit 버전의 PHP 설치 후 CUBRID와 연동 실패 시 해결 방법 file 진우진 2016.03.28 4523
37 응용개발 Windows 환경에서 JAVA SP 사용 utf-8 한글 깨짐 해결 file 손승일 2016.07.01 4592
Board Pagination Prev 1 2 3 Next
/ 3

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales