일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- roadbike
- 맥
- Java
- Nas
- 자전거
- SaberTactical
- console
- FXImpactMK2
- 출근
- 자카르타라이딩
- brew
- Garmin
- ssh
- 제주도
- Mac
- Canon6DMark2
- OSX
- JakartaLife
- 탁스네오
- JKT.CC
- Oracle
- PS3
- CerveloS5
- iterm
- synology
- MSsql
- 자전거출근
- MacOS
- 자카르타일상
- 단축키
- Today
- Total
XX아~ 열심히 하지마~. 잘하란 말야~
ORACLE에서 LONG TYPE의 COLUMN에 LIKE 조건을 걸기 위해서.. LONG TO CHAR 본문
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.DATA_DEFAULT
, TMP.DATA_DEFAULT_CHAR
, TMP.COLUMN_ID
FROM (
SELECT OWNER
, TABLE_NAME
, COLUMN_NAME
, DATA_TYPE
, DATA_LENGTH
, DATA_PRECISION
, DATA_SCALE
, DATA_DEFAULT
, EXTRACTVALUE ( DBMS_XMLGEN.GETXMLTYPE('SELECT DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ''' || TABLE_NAME || ''' AND COLUMN_NAME = ''' || COLUMN_NAME || '''' ), '//text()' ) AS DATA_DEFAULT_CHAR
, COLUMN_ID
FROM DBA_TAB_COLUMNS
WHERE 1=1
AND TABLE_NAME = '테스트테이블명'
) TMP
WHERE TMP.DATA_DEFAULT_CHAR LIKE 'SYS%'
ORDER BY TMP.COLUMN_ID
위에서 보는 것과 같이 DBMS_XMLGEN.GETXMLTYPE 을 써서 XML 형태로 변환하고 그걸 다시금 TAG를 없애면 된다.
DBMS_XMLGEN.GETXMLTYPE 의 이해를 돕기 위해서 아래의 QUERY는 문자열로 된 수식을 수식 자체로 변환하는
예제이다.
SELECT X
, TO_NUMBER( DBMS_XMLGEN.GETXMLTYPE( 'SELECT ' || X || ' FROM DUAL' ).Extract('//text()') ) Y
FROM (SELECT '8*5/4' X FROM DUAL) ;
결과값은 직접 돌려보시길...
'Blog > DB' 카테고리의 다른 글
ORACLE에서 Long Type의 Column에 대한 Like 검색 Ver.2 (0) | 2023.12.08 |
---|---|
SqlDeveloper에서 XMLTYPE 값 보기 (0) | 2019.01.08 |
달력을 DB에 저장해서 사용해야 하는 할 필요가 있을 때 달력 생성 - MSSQL (0) | 2019.01.03 |
MSSQL , ORACLE 월(month)의 마지막날 구하기 함수 (0) | 2019.01.03 |
SSMS에서 Table Design 시 Comment(설명) 항목 보기 (0) | 2018.12.03 |