반응형
어쩌다 보니 쿼리로 문자를 파싱을 하게 되었다.......
파싱하려는 NAME의 형식은
01=AA;02=BB;03=CC
02에 대한 내용만 파싱하고 싶어서 아래와 같이 ... 작성하였다.
SELECT DECODE(INSTR(#NAME#, '='), 0, disp_name, SUBSTR(#NAME#, INSTR(#NAME#, '=', 1, 2)+1, INSTR (#NAME#, ';', 1, 2)-INSTR(#NAME#, '=', 1, 2)-1)) AS NAME FROM DUAL;
결과 java.sql.SQLException:Invalid use of host variables
하지만 사전에 테스트했을 때는 잘만 되었던 쿼리가 altibase에서는 에러가 퐝퐝~
altibase에서 함수에 변형되는 파라미터가 들어갈 때 발생하는 에러라고 한다.
참고 블로그에서 해결한 대로 cast를 사용하여 적용하니 그제서야 잘 돌아간다...ㅎㅎㅎ
SELECT DECODE(INSTR(cast(#NAME# as varchar(100)), '='), 0, cast(#NAME# as varchar(100)), SUBSTR(cast(#NAME# as varchar(100)), INSTR(cast(#NAME# as varchar(100)), '=', 1, 2)+1, INSTR (cast(#NAME# as varchar(100)), ';', 1, 2)-INSTR(cast(#NAME# as varchar(100)), '=', 1, 2)-1)) AS NAME FROM DUAL;
결과 BB
그리고 INSTR시... 마지막 04번째 파싱을 할 때는 뒤 자리를 생략해도 된다는 것을... 배웠다...!
SELECT DECODE(INSTR(#NAME#, '='), 0, #NAME#, SUBSTR(#NAME#, INSTR(#NAME#, '=', 1, 4)+1)) AS NAME FROM DUAL
반응형
'밥줄 > DB' 카테고리의 다른 글
| [DB] Altibase, Oracle DB Plan (0) | 2025.08.17 |
|---|---|
| MariaDB 인증방식 변경(sha256 가능여부? 그리고 ed25519) (1) | 2025.08.17 |
| [DB] aexport, iloader (altibase) (0) | 2021.04.16 |
| [DB] Oracle MERGE INTO (0) | 2021.04.16 |