Background Image
조회 수 1319 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
199 질의작성 join update 처리방법입니다.(연관성 있는 테이블을 조인하여 처리하는 UPDATE 구문) 권호일 2012.11.30 20387
198 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23071
197 CUBRID 매니저 CUBRID와 CUBRID Web Manager설치, 그리고 XE의설치 및 연동까지 file cubebridge 2012.11.13 18099
196 응용개발 CUBRID-PHP-Driver 연동가이드 file cubebridge 2012.11.13 17136
195 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22611
194 응용개발 오라클 to CUBRID로 마이그레이션 수행 시 주의사항 cubebridge 2012.11.12 16639
193 마이그레이션 오라클의 order by 시 first와 last 대체 사용법 file cubebridge 2012.11.12 20573
192 운영관리 CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 cubebridge 2012.09.18 33157
191 기타 전자정부 표준프레임워크 CUBRID 사용 방법 문의 참조 cubebridge 2012.09.17 20597
190 운영관리 Windows 서버에서 [장치에 쓰기 캐싱 사용] 설정/해제에 따른 성능 차이 이용미 2012.06.30 20231
189 운영관리 데이터 입력 중 디스크 공간 부족 오류가 발생하였을 때, 복구 방법 이용미 2012.06.30 14329
188 질의작성 게시판 응용 중 조회수로 정렬하는 경우 인덱스 생성 방법 1 손승일 2012.06.23 13902
187 질의작성 문자(char, varchar)로 설계한 날짜데이타 검증하기 권호일 2012.04.27 17826
186 CUBRID 매니저 CUBRIDManager의 접속 정보 이관 file cubebridge 2012.04.14 12382
185 마이그레이션 CUBRID Migration Tookit 8.4.1 file cubebridge 2012.04.14 11081
184 운영관리 CUBRID 에서의 사용자 권한관리 방법 file cubebridge 2012.04.14 23649
183 마이그레이션 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법 file cubebridge 2012.04.14 24546
182 질의작성 세부내역과 소계를 한개의 쿼리문장으로 수행하는 SQL 권호일 2012.03.31 14092
181 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9416
180 질의작성 여러건의 코드명을 한건으로 조회하는 쿼리입니다. 1 권호일 2012.03.30 10752
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

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