반응형
--시스템 날짜(DATETIME)를 년월일로 변환 TO_CHAR(SYSDATE,'YYYYMMDD') --시스템 날짜(DATETIME)를 시간을 24시간제로 변환 , TO_CHAR(SYSDATE,'HH24MI') --시스템 날짜 시간까지 변환 , TO_CHAR(SYSDATE,'yyyymmddhh24miss') --주민번호에서 성별가져오기(여러 조건별 값 case when) , DECODE(SUBSTR(A.JUMIN_NO,7,1),'1','M','2','F','3','M','4','F','M') --201405 같은 날짜에서 한달 더하기 , TO_CHAR(ADD_MONTHS(TO_DATE(CLS_MTH || '01', 'yyyy-MM-dd'), 1), 'yyyyMM') --해당일자에서 특정일수를 더한 결과를 보여준다.(예: 20160101->20160108) ,TO_CHAR(SYSDATE + 7, 'YYYYMMDD') --특정일에서 오늘까지의 경과일(count) , TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD')) - to_date('2017-09-10') //주민번호별 나이 체크 ,CASE WHEN SUBSTR(A.JUMIN_NO,1,6) IN ('111111','222222') THEN 0 WHEN SUBSTR(A.JUMIN_NO,7,1) IN ('1','2','5','6') THEN TO_NUMBER(SUBSTR(A.REQ_DT,1,4)) - TO_NUMBER('19'||SUBSTR(A.JUMIN_NO,1,2)) + 1 ELSE TO_NUMBER(SUBSTR(A.REQ_DT,1,4)) - TO_NUMBER('20'||SUBSTR(A.JUMIN_NO,1,2)) + 1 -- 1234561234567형태의 주민번호를 123456-1234567형태로 출력 아래 $ <- 없어도 되는 듯 , REGEXP_REPLACE( B.JUMIN_NO, '(\d{6})(\d{7})$', '\1-\2') , REGEXP_REPLACE( A.REQ, '(\d{5})(\d{3})(\d{5})', '\1-\2-\3') , REGEXP_REPLACE( STRDATE, '(\d{4})(\d{2})(\d{2})', '\1/\2/\3') AS DT ( 20140405 -> 2014/04/05) --특정 문자열에서 짜르기 , REGEXP_SUBSTR('001,033,036','[^,]+') --DATEDIFF TO_DATE(A.RST_SCHE_DT,'YYYYMMDD') - TO_DATE(Z.BASE_DAY,'YYYYMMDD') DEFF_DAY --UPPER, LOWER UPPER('aaaaaa') LOWER('AAAAAA') --TRIM TRIM('RESMET ') LTRIM(' RESMET ') RTRIM('RESMET ') --숫자변환 TO_NUMBER(RESOHP) --해당 위치 반환 INSTR(UPPER(RESGAL), 'OVER') 문자열이 나타나는 위치 반환 --숫자 나누기 나누는 수가 0이거나 null 일경우는 NULL 그게 아니면 계산하기 DECODE(B.NST_CNT, NULL, NULL, 0, NULL, ROUND(B.NST_AMT / B.NST_CNT)) XXX from dual; --문자 숫자인 데이터에서 숫자만 추출하기 sfsdfsdf33333 ,TRANSLATE('sfsdfsdf33333','1234567890.','XXXXXXXXXXX') NUMCHANGE --지정된 문자를 특정 문자로 변환 ,REPLACE(TRANSLATE('sfsdfsdf33333','1234567890.','XXXXXXXXXXX'),'X') --문자열에서 일단 숫자를 제거 ,REPLACE('sfsdfsdf33333', REPLACE(TRANSLATE('sfsdfsdf33333','1234567890.','XXXXXXXXXXX'),'X'),'') --문자를 제거 TO_NUMBER(RTRIM(LTRIM(REPLACE('sfsdfsdf33333', REPLACE(TRANSLATE('sfsdfsdf33333','1234567890.','XXXXXXXXXXX'),'X'),'') ))) --숫자로 변환 --Oracle 개행문자(\r\n) 제거하기 --chr(10) : Line Feed <-- 줄바꾸기 --chr(13) : CR <-- 행의 처음으로 , REPLACE(REPLACE(TEXT,CHR(10),''),CHR(13),'') TEXT --첫번째 컬럼값이 두번째 값이면 세번째 값을 반환하고 아니면 4번째 값을 반환한다. if~else , DECODE(MR.COL, '01', 'Y', '') AS COL1 --1,2,3,4....등의 행별로 있는 번호가 필요할 때(예: 일괄채번시) SELECT ROWNUM FROM tablename --leading zero 앞에 특정 문자를 붙인다. 12548 -> 0012548 SELECT LPAD('12548', 7, '0') --LEFT 0012548 , RPAD('12548', 7, '0')--RIGHT 1254800 FROM DUAL
반응형
'Oracle' 카테고리의 다른 글
[Query] Insert with (0) | 2015.07.31 |
---|---|
SQL Developer 접속시 (0) | 2015.07.29 |
ODP.net에서 IIS ODP 에러 날 경우 (0) | 2015.07.29 |
제어 구조 (0) | 2015.07.29 |
[Query] JOIN (0) | 2015.07.29 |
댓글