Background Image

FORUM

조회 수 2268 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

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

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 32bit, Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 수행 결과
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java, php, odbc 등 입력

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축

-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
REGEXP를 활용하여 사용하는 방법을 알고 싶습니다

예시)
SELECT * FROM TEST_TABLE WHERE TEST = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('1234567890', '2', ''), '4', ''), '6', ''), '8', ''), '0', '')

1부터 0까지 있는 문자열이 있을때 짝수만 지우고 홀수만 결과값을 얻고 싶을때 어떻게 활용이 가능한지 답변 부탁드립니다
  • ?
    엄기호 2019.01.30 16:54

    큐브리드를 이용해주셔서 감사합니다.

    큐브리드에서 정규식(REGEXP)를 활용하여 사용하는 방법은 URL : https://www.cubrid.org/manual/ko/9.3.0/sql/function/condition_fn.html#regexp-rlike

    예시 질의문 REPLACE함수를 REGEXP함수로 대체할 수는 없습니다.
    만약 REGEXP를 사용하고 싶으면 java stored procedure 사용하시고, java 정규식 표현을 만들어서 DB에 등록한 다음 함수를 호출하여 사용하셔야 원하는 결과를 얻을 수 있습니다.

    java stored procedure를 사용하는 방법은 URL : https://www.cubrid.org/manual/ko/9.3.0/sql/jsp.html

    아래의 절차대로 진행하시면 원하는 결과를 얻을수 있을 겁니다.

    1) cubrid.conf 의 java_stored_procedure=yes

    2) java 사용하기 위해 환경 설정

    3) 자바 소스 작성 및 컴파일 : RegexLib.java
    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;
    }
    }

    4) java 컴파일
    5) 컴파일된 Java 클래스 로드
    #> loadjava -y db명 RegexLib.class

    6) 로딩한 Java 클래스 등록(DB 접속한 후 등록)
    CREATE FUNCTION Rregexp_replace(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';

    7) DB를 종료 및 재구동(재구동을 해야지만 java 함수를 사용할 수 있습니다.)
    #>cubrid server stop db명
    #>cubrid server start db명


    8) DB접속 후 쿼리문 수행

     SELECT rregexp_replace('12345678890', '[2, 4, 6, 8, 0]', '');

     SELECT * FROM TEST_TABLE WHERE TEST = (SELECT rregexp_replace('12345678890', '[2, 4, 6, 8, 0]', ''))

  • ?
    박세훈 2019.03.07 14:45
    단순히 여러개의 문자열을 대체하려고 한다면 TRANSLATE 함수를 사용하시면 됩니다.

    EX)
    SELECT TRANSLATE('1234567890', '24680', '') FROM db_root

    자세한 내용은 아래 메뉴얼을 참고하세요.
    https://www.cubrid.org/manual/ko/9.3.0/sql/function/string_fn.html#translate

  1. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4248
    read more
  2. 브로커(CAS)수 질문드립니다!

    Date2023.06.05 By요시니 Views149
    Read More
  3. 데이터 이관 문의입니다.

    Date2023.05.30 Bykipo0821 Views125
    Read More
  4. 8.4.4 charset. Collation 확인 방법

    Date2023.05.24 By네오랜덤 Views175
    Read More
  5. 8.4.4버젼 charset 확인

    Date2023.05.23 By네오랜덤 Views182
    Read More
  6. 쿼리 속도 차이 질문

    Date2023.05.18 By하얀미스 Views139
    Read More
  7. spring boot 에서 HikariPool-1 - Driver does not support get/set network timeout for connections. (java.lang.UnsupportedOperationException) 질문 드립니다.

    Date2023.05.18 Bykjaminam Views724
    Read More
  8. cci 프로그래밍에서 DB LINK 관련 문의

    Date2023.05.18 Byjjune1206 Views123
    Read More
  9. 큐브리드 매니저 실행이 오류

    Date2023.05.18 By청주시청 Views97
    Read More
  10. ddl 추출

    Date2023.05.17 By네오랜덤 Views94
    Read More
  11. 하나의 쿼리에서 복수 테이블 업데이트 방법 문의

    Date2023.05.17 By도담도담 Views122
    Read More
  12. cubrid driver 설치 문의

    Date2023.05.08 By고구망구망 Views423
    Read More
  13. 큐브리드 매니저 접속 이 안됩니다. 확인 요청 드립니다.

    Date2023.04.28 By뿡이 Views127
    Read More
  14. Fk값 가져오기

    Date2023.04.24 By네오랜덤 Views159
    Read More
  15. 서버 메모리 교체 및 ha 상 데이터 삭제 절차

    Date2023.04.20 By레피엘 Views105
    Read More
  16. java stored procedure 에 loadjava 로 jar 파일 로드 시 java.lang.ClassNotFoundException 에러 문의

    Date2023.04.18 By개미가불쌍해 Views138
    Read More
  17. Cubrid stored procedure 스케쥴 등록 형식

    Date2023.04.17 ByRoy Views104
    Read More
  18. 암호화 함수 MDB_ENC 질문입니다

    Date2023.04.17 ByBE-DEV Views79
    Read More
  19. auto_increment 추가 방법 문의

    Date2023.04.14 By부패방지운영팀 Views239
    Read More
  20. CUBRID 사용자 계정 생성 관련 문의

    Date2023.04.14 By몽키스패너 Views127
    Read More
  21. order by 이후 rownum이 의도와 다르게 찍힙니다.

    Date2023.04.14 By바보똥개 Views134
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 199 Next
/ 199

Contact Cubrid

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