SQL 8

Oracle 공부 경험담

저는 오라클이 인정한 전문가였습니다. 뭔 소리냐고요? Oracle Certified Professional 을 해석하면 오라클이 인정한 전문가 맞지요? 그런데 OCP 8i 합격은 아주 오래전이고 자격이 언제인지도 모르게 만료되었기 때문에 "전문가였습니다"라는 과거형으로 이야기했습니다. 2003년도 10월 이였군요! 조그마한 회사 다니며 Visa3D 인증 기술지원하던 시절이었는데, 우연한 기회에 오라클 바우처를 얻었고 덤프를 달달 외워서 땄었지요. OCP8i 합격 후 1년이 되지 않은 어느날이었어요. 엘지카드에서 SM 파견 근무 중인 Java 개발자가 퇴사한다고 저보고 가서 대신 일할 수 있겠냐고 사장님께서 헬프 치시더라구요. 비트교육센터에서 Java 공부를 그렇게 해놓고 SI SM 을 한번도 해보지 못한..

SQL 2023.02.01

Oracle Timestamp Interval

1. DATE sysdate 은 DATE 형입니다. create table test_date as select sysdate as today from dual; test_date 의 레이아웃을 보면 today 칼럼이 DATE 형임을 확인할 수 있습니다. 2. TIMESTAMP TIMESTAMP 는 DATE 형의 확장형입니다. TIME ZONE 옵션에 따라 표현 방식이 미세하게 다른 몇 가지가 있습니다. 아래 스크립트를 통해 확인해볼 수 있습니다. CREATE TABLE temp_time_table (COL1 TIMESTAMP, COL2 TIMESTAMP WITH TIME ZONE, COL3 TIMESTAMP WITH LOCAL TIME ZONE); INSERT INTO temp_time_table VAL..

SQL 2022.10.07

key value 파싱 방법

다음과 같은 4가지의 케이스가 CLOB 형태로 관리되고 있습니다. item#1,item#2,...item#n 의 값을 뽑아내고 싶습니다. 케이스1 a)item#1; 10 b)item#2; 20 케이스2 a)item#1; 2 b)item#2; 3 케이스3 a)item#1; 5 & 4 b)item#2; 3 케이스4 a)item#1; 4 c)item#3; 3 1. 단순한 key value 파싱 REGEXP_SUBSTR(FT,'(item#1);(.*)',1,1,'i',1) 구문으로 쉽게 key값을 가져올 수 있습니다. 정규표현식 (item#1);(.*)의 두 번째 괄호가 value 이므로 REGEXP_SUBSTR(FT,'(item#1);(.*)',1,1,'i',2) 로 하면 value 를 추출합니다. SELEC..

SQL 2022.10.07

20년 간 몰랐던 LTRIM RTRIM 사용법

SQL 이 우리말보다 편한 멋쟁이천재사자입니다. 오늘 오픈채팅방에서 우연히 LTRIM 관련 질문을 보고 깜짝 놀랐습니다. 1. 간단하지만 깜짝 놀란 질문 데이터자격증 관련 오픈 채팅방에서 어떤 분의 질문을 보았습니다. 다음 SQL 의 결과는 ? select RTRIM(LTRIM('SQL DEVELOPER', 'S'), 'SQL') from dual 2. 왜 놀랐냐구요? 오래 전 OCP8i 취득한 이래 SQL과 함께한 세월이 20여년입니다. 그런데 질문에서 보이는 LTRIM RTRIM 사용 구문이 생소합니다. 두 번째 인수를 사용한 문장을 처음 봅니다. 언제부터 제공된 기능이었을까? 3. 관련 질문을 Googling 해보았습니다. 똑같은 질문이 네이버카페에도 올라와 있네요. https://cafe.nave..

SQL 2022.08.30

[TIP] 테이블 레이아웃 조회

/* 익숙하지 않은 테이블 레이아웃을 보기 편하게 표시해주는 쿼리입니다. */ SELECT A.OWNER, A.TABLE_NAME, A.COMMENTS TABLE_COMMENTS , B.COLUMN_ID, B.COLUMN_NAME, C.COMMENTS COLUMN_COMMENTS , B.DATA_TYPE||CASE WHEN B.DATA_TYPE = 'TIMESTAMP(6)' THEN '' ELSE '('||CASE WHEN B.DATA_TYPE IN ('NUMBER', 'FLOAT') AND B.DATA_PRECISION IS NOT NULL AND NVL(B.DATA_SCALE, 0) 0 THEN TO_CHAR(B.DATA_PRECISION)||','||TO_CHAR(B.DATA_SCALE) WHEN ..

SQL 2022.08.23

부서별 평균 월급보다 높은 월급의 사원 목록 구하기

질문 ※ emp 테이블 정보가 당장 없어 union all 을 이용해서 가상의 emp 테이블 생성했습니다. with emp as ( select 'Jane' ename, 1 as deptno, 100 as sal from dual union all select 'Shawn' ename, 1 as deptno, 200 as sal from dual union all select 'Ted' ename, 1 as deptno, 250 as sal from dual union all select 'steve' ename, 2 as deptno, 700 as sal from dual union all select 'John' ename, 2 as deptno, 600 as sal from dual ) select..

SQL 2022.07.19

Oracle 컬럼 자료형 NUMBER(3,2) 의미는?

1. 질문 오라클 데이터베이스에서 테이블 설계 시 컬럼의 자료형을 NUMBER(3,2)이라고 선언했을 시, 어떤 데이터가 올 수 있는 지 이게 무슨소리인지 이해가안가요 ㅠㅠ 2. 답변 NUMBER(3,2) 는 precision 3 scale 2 로서 소수점아래 2자리를 갖는 3자리 즉 0.00 패턴의 값을 의미합니다. 3. 테스트 select CAST(1.234 AS NUMBER(3,2)) AS tt from dual; -- 1.23 select CAST(1.235 AS NUMBER(3,2)) AS tt from dual;-- 1.24 select CAST(10 AS NUMBER(3,2)) AS tt from dual; -- ORA-01438: 이 열에 대해 지정된 전체 자릿수보다 큰 값이 허용됩니다. ..

SQL 2022.07.14

floor vs trunc

소수를 정수로 처리하는 경우 반올림을 주로 하지만, 가끔은 절사나 올림 내림 처리도 하지요. 3.14 를 3으로 변환하는 방법은 무엇까요? 두가지 방법이 가능하겠습니다. floor(3.14) 또는 trunc(3.14) 입니다. 저는 내림은 floor 로 하고 절사는 trunc 처리를 하면서도, 막연하게는 두 개들 동일시 해왔던 것 갔습니다. 얼마전 문득 결과가 항상 동일하다면 두개가 있을 이유가 없을 터이고, 두개의 차이가 무엇일까 궁금해졌습니다. 그래서 Oracle SQL Language Reference 를 좀더 꼼꼼히 확인해 보았습니다. FLOOR (oracle.com) FLOOR FLOOR Syntax Description of the illustration ''floor.gif'' Purpose..

SQL 2022.07.13