/** * @Description 월의 마지막 일 구하기 * @Param String feemon //정산월:201911 * @return String 마지막일자: 31 */ public static String getLastDate(String feemon){ String result=""; try{ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); //dd 추가도 가능 Date d = sdf.parse(feemon); Calendar cal = Calendar.getInstance(); cal.setTime(d); int endDate = cal.getActualMaximum(Calendar.DAY_OF_MONTH); result = String.valueOf(endDate); }catch(ParseException e){ e.printStackTrace(); } return … 계속 읽기 월의 마지막 일 구하기
iframe 스크롤 가로/세로 숨기기
HTML iframe 엘리먼트의 세로스크롤 <iframe scrolling=yes></iframe> 이렇게 하고 iframe src에 들어간 화면의 body 엘리먼트의 style을 잡아준다. <body style="overflow-x:auto;overflow-y:hidden"> 이렇게 하면 가로스크롤만 보이게 된다.
언어별 캐쉬 방지
참조 : http://ellieya.tistory.com/68 HTML <META http-equiv="Expires" content="-1"> <META http-equiv="Pragma" content="no-cache"> <META http-equiv="Cache-Control" content="No-Cache"> ASP <% Response.Expires = 0 Response.AddHeader "Pragma","no-cache" Response.AddHeader "Cache-Control","no-cache,must-revalidate" %> JSP <% response.setHeader("Cache-Control","no-store"); response.setHeader("Pragma","no-cache"); response.setDateHeader("Expires",0); if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); %> response.setHeader("cache-control","no-store"); // http 1.1 response.setHeader("Pragma","no-cache"); // http 1.0 response.setDateHeader("Expires",0); // proxy server 에 cache방지. PHP <? header("Pragma: no-cache"); header("Cache-Control: no-cache,must-revalidate"); ?> … 계속 읽기 언어별 캐쉬 방지
오라클 랜덤 숫자 만들어주기
참조 : http://starlandm.blogspot.jp/2010/09/oracle-%EB%9E%9C%EB%8D%A4%EA%B0%92-%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EA%B8%B0.html SELECT ROUND(DBMS_RANDOM.VALUE(1,17),0) FROM DUAL;
오라클 정규식 regexp_replace
정규식 문자 변형 select regexp_replace('가나다라12345647890', '[0-9]', '')from dual; ==> 결과값 '가나다라'
테이블 칼럼 추가 수정 삭제 스크립트
1. 컬럼 추가 alter table 테이블 add(필드 number(10)); 2. 컬럼명 변경 alter table 테이블 rename column 현재이름 to 변경이름; 3.데이터 타입 변경 alter table 테이블 modify(필드명 varchar(10)); 4.컬럼삭제 alter table 테이블 drop(필드);
오라클 SELECT 엑셀 변환 후 엑셀에서 개행되어 보이도록 처리하기
REGEXP_REPLACE( REGEXP_REPLACE( '어쩌구저쩌구', '\\n', CHR(10) ), '\\r', CHR(13)) n과 r이 바뀌었을지도 모름. ㅡㅡㅋ
ROW_NUMBER() OVER(PARTITION BY 칼럼1 ORDER BY 칼럼1)
SELECT 'A' d, 1 a, 2 b, 3 c FROM dual UNION ALL SELECT 'B' d, 4 a, 5 b, 6 c FROM dual UNION ALL SELECT 'B' d, 7 a, 8 b, 9 c FROM dual UNION ALL SELECT 'C' d, 0 a, 1 b, 2 c FROM dual UNION ALL SELECT 'C' d, … 계속 읽기 ROW_NUMBER() OVER(PARTITION BY 칼럼1 ORDER BY 칼럼1)
WM_CONCAT보다 속도가 좋은 LISTAGG
참고사이트 : http://krespo.net/195 11g에서 가능 간단한 예 SELECT DEPTNO , LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY NAME) AS NAME FROM TEST_DB WHERE DEPTNO = 1 GROUP BY DEPTNO; 데이터가 적을때는 문제 없었지만, 데이터가 많아지니 WM_CONCAT에서 속도를 다 잡아 먹고 있었다. 아래처럼 LISTAGG로 바꾸니 속도가 많이 빨라졌다. SELECT B.HICODE, B.HINAME, A.MCODE, A.MNAME, A.BUSINESSNUMBER, A.PURCHASETYPE , LISTAGG(DECODE(C.DDCFLAG,'I',C.ACQUIER,''),',') WITHIN GROUP … 계속 읽기 WM_CONCAT보다 속도가 좋은 LISTAGG
주로 쓰는 힌트
아래와 같은 힌트들이 주로 사용된다. /*+ INDEX(A MAN_PK) */ /*+ ORDERED USE_NL(A, B, C, D, F) INDEX(B MAN_IX1) */ /*+ FULL(A) PARALLEL(A,4)*/ /*+ LEADING(A B) INDEX(A MAN_PK) INDEX(B CAR_PK) */ A B테이블을 우선으로 선회하고 인덱스를 태운다.