내 블로그의 인입 통계를 보면 항상 1위에 올라 있는 글이 아주 오래전에 포스팅 했던 LONG Type에 대한 Like 검색이다. 오랜만에 Oracle DB를 사용하는 Project에서 일을 하게 되서 생각 난 김에 해당 글에 대한 보완 내용을 메모해 둔다. Oracle은 현재 LONG Data Type을 권장하지 않는다. 하물며 12C 이후에는 사용이 제한되기까지 했다. LONG 대신에 CLOB을 권장하고 있는데... 어쨌든 기존 시스템이 LONG으로 구축이 되어 있다면 방법이 없지 않은가... 추후 새로 만드는 TABLE에서 Data Type을 LONG 대신 CLOB으로 하면 되겠지만.. 이미 있는 거에서는 써먹어야 하니.. Oracle 9i 이후 버전을 사용하고 있다면 TO_LOB..
오랜만에 공부좀 해보려고 이것저것 설치하고 있는데... Oracle에 접속을 하기 위해서 SqlDeveloper를 설치하고 실행 하였다. 실행이 안되고 그냥 죽어버린다. 원인은 SqlDeveloper는 Java 기반의 어플인데 OSX에 설치된 Java의 경로가 설정되지 않아서 발생하는 문제일 가능성이 가장 크다. 1. OSX에 설치된 Java의 경로를 확인한다. 일단 Terminal에서 /Library/Java/JavaVirtualMachines 로 이동을 한다. 사용자마다 현재 설치된 Java의 Version이 다르므로 아래 이후 경로에 대해서는 각자의 환경에 맞게 찾기 바란다. 나의 경우엔 아래의 경로가 Java Home의 경로이다. /Library/Java/JavaVirtualMachines/jdk..
SqlDevloper에서 XMLTYPE 값을 조회하면 실제 값이 보이는게 아니고 (XMLTYPE) 이라고 출력된다.뭐... 현재 Version (18.2.0.183) 에서는 그냥 그렇게 보이는 듯...도구 >> 환경설정 >> 데이터베이스 >> 고급 >>> "격자에 XML 값 표시" 를 체크해도 동일하다.언제나 그렇듯이... 이가 없으면 잇몸으로~!!! WITH TMP AS ( SELECT XMLTYPE ( '' ) AS TMP_COL FROM DUAL )SELECT TMP.TMP_COL , XMLTYPE.GETCLOBVAL ( TMP.TMP_COL ) FROM TMP ;
ORACLE에서 테이블 정보를 조회하기 위한 QUERY를 짜다가 COLUMN DEFAULT 값의 COLUMN이 LONG TYPE이라서 조건절에 LIKE를 쓸 수 없는 상황이 발생했다. ORACLE에서는 LONG TYPE을 TO_CAHR 함수로 변경이 안된다. 그럼 우짜노~!!! 이가 없으면 잇몸으로~!!! DEFAULT 값에 SYSDATE가 있는 TABLE을 예로 들어서 설명한 것이다. 참고하시길~ SELECT TMP.OWNER , TMP.TABLE_NAME , TMP.COLUMN_NAME , TMP.DATA_TYPE , TMP.DATA_LENGTH , TMP.DATA_PRECISION , TMP.DATA_SCALE , TMP.D..
개발을 하다보면 가끔 특정 날짜가 포함된 달의 마지막 날짜를 구해야 하는 경우가 종종 발생한다.고전적인 방법은 지정날짜에 1개월을 더하고 일(day)를 01로 바꿔준 날짜에서 하루를 빼준다.뭐 어느 VERSION 부터 추가된건지는 몰라도... 최근 사용되는 DB는 거의 될듯~난 아직도 20년전에 묶여서 하는 듯한 이느낌은 뭐징...ㅋㅋ MS-SQL-- 1개월을 더한다.SELECTCONVERT( VARCHAR(10), DATEADD( M, 1, GETDATE() ), 112); --년월(YYYYMM)만 추출SELECTLEFT( CONVERT( VARCHAR(10), DATEADD( M, 1, GETDATE() ), 112) , 6 ); --년월(YYYYMM)에 01(DAY)를 붙임SELECTLEFT( CO..
오라클 테이블 / 컬럼 정보 조회 쿼리... 숫자형의 경우 Length 컬럼을 조회하면 다 동일하게 나온다. 그래서 정수부분과 소수 부분을 따로 합해줘야 한다. SELECT A.TABLE_NAME AS "TABLE_NAME" , (SELECT COMMENTS FROM ALL_TAB_COMMENTS WHERE TABLE_NAME = A.TABLE_NAME) AS "TABLE_COMMENT" , A.COLUMN_NAME AS "COLUMN_NAME" , D.COMMENTS AS "COLUMN_COMMENT" , A.DATA_TYPE AS "DATA_TYPE" , CASE WHEN A.DATA_TYPE = 'NUMBER' THEN A.DATA_PRECISION || ',' || A.DATA_SCALE ELSE..