목록전체 글 (17)
달바라기
1. connect by 절에 rownum 조건으로 해당 월의 마지막 일자 만큼 반복2. rownum을 사용하여 해당월의 모든 일자 생성SELECT TO_CHAR(MM + ROWNUM - 1, 'YYYYMMDD') DD FROM (SELECT TO_DATE(TO_CHAR(SYSDATE, 'YYYYMM'), 'YYYYMM') MM FROM DUAL)CONNECT BY ROWNUM - 이후 달력형으로 만들기 위해 월일, 일, 요일구분, 년중 주차 값을 추가SELECT TO_CHAR(MM + ROWNUM - 1, 'YYYYMMDD') ORDDD , TO_CHAR(MM + ROWNUM - 1, 'MMDD') MMDD , TO_CHAR(MM + ROWNUM - 1, 'dd') DAYNUM ..
오라클에서 문자열을 split 한 후 그 결과를 로우로 리턴 받고 싶은 경우가 있을 수 있습니다.예를 들어 123▨9214▨432▨567▨8867 와 같은 문자열을 123 9214 432 567 8867 와 같은 형태로 변경해야 할 때가 있습니다.그러나 오라클에는 split 함수가 존재하지 않고, 결과가 다중 로우로 떨어지기에 별도의 함수를 만들기도 어렵습니다. 이럴 때 쓸만한 방법을 만들어 보았으니 필요하신 분들께 도움이 되었으면 합니다. 아이디어 1오라클 10g 부터 지원하는 regexp_substr 함수를 활용하면 쉽게 구분자 사이의 값을 가져 올 수 있습니다.regexp_substr 참고 -> https://docs.oracle.com/cd/B28359_01/server.111/b28286/..
오늘 좀 황당한 일을 당해 오랜만에 글을 올려 봅니다. MySQL의 경우 rownum 같은 것을 따로 제공하지 않습니다.해서 변수를 사용한 편법으로 rownum을 구하죠. 일단 일반적인 경우 SELECT col1, col2 FROM TABLE1ORDER BY col2 의 rownum을 구현할 경우 SELECT @rownum:=@rownum+1 as num, x.* FROM (SELECT col1, col2 FROM TABLE1 ORDER BY col2) X, (SELECT @rownum:=0) r 과 같은 방법을 사용할 것입니다.헌데..원하는 결과가 num col1 col2 1 2 1 2 1 2 3 4 3 4 3 인데, 실제 결과는 num col1 col2 1 1 2 2 2 1 3 3 4 4 3 위와 같..
오랫만에 글을 씁니다.현재도 xmlagg 관련 글을 보러 오시는 분들이 계신듯 하여 짧은 정보 하나 더 올리겠습니다오라클 11g r2 부터는 listagg라는 새로운 함수를 제공하고 있습니다 문법은LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )]이며, ex)SELECT deptno , LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees FROM emp GROUP BY deptno; DEPTNO EMPLOYEES ---------- ------------------------------------------------------------ 10 CLARK,KING,MILLER 20 AD..
뭐.. 따로 방법이 없더군요. 그냥 정규식을 써서 처리해 봤습니다. select a, b, decode(REGEXP_REPLACE(trim(b), '^-?[0-9]+((\.[0-9]+)([Ee][+-][0-9]+)?)?', ''), null, '숫자', '문자') flag, decode(REGEXP_REPLACE(trim(b), '^-?[0-9]+((\.[0-9]+)([Ee][+-][0-9]+)?)?', ''), null, to_number(trim(b))) val from (select 1 a, '1234' b from dual union select 2 a, '-1.234E+04' b from dual union select 3 a, '1.234E+04' b from dual union select ..
프로그램을 하다 보면 데이터 그리드 같은 곳에 xpath를 적용시켜 내용을 보여 주는 경우가 있다 그때 특정 컬럼의 값을 검색하는 방법으로 어떤 방법들을 쓰시는지.. 현재 trustForm이라는 것을 사용해 개발 작업 중인데, 조회된 리스트를 다시 검색하는 경우 여러 사람들이 쿼리를 다시 해오는 경우가 있다. 해서 xpath 함수로 처리해 보았다 datagrid1.nodeset = "/root/main/test" 이런식으로 바인딩을 할 경우가 있을때 /root/main/test/name 의 값이 'tester'를 검색 하기 위한 방법으로 xpath 함수를 사용해 보자 tmpStr = 'tester'; datagrid1.nodeset = "/root/main/test[contains(name, '" + t..
전에 xml을 사용하여 sys_conect_by 보다 효율적으로 여러로우의 컬럼 값을 합하는 방법을 알려드린 적이 있다. 헌데 여기에 약간에 문제가 있는데 값의 중복과 널값 배제문제다. GBN VAL A 001 A 001 A 003 A 004 A 005 A 011 B 007 B 004 B 004 B 010 C 011 C C 002 C 003 만약 위와 같은 데이터를 갖고 있는 테이블에서 SELECT gbn, substr(xmlagg(xmlelement(a,',' || val) order by val).extract('//text()'), 2) val FROM lis.testt GROUP BY gbn 위와 같은 쿼리를 돌리면 결과가 GBN VAL A 001,001,003,004,005,011 B 004,0..
바코드 프린터를 사용할 경우나, 프린터에 직접 RAW 데이타를 보내 조작해야 할 경우가 있다 허나 VB에서는 RAW 데이타 전송을 지원하지 않는다 그래서 뒤져뒤져 MSDN에서 찾아 코딩을 해보았다 http://support.microsoft.com/kb/600847/ko 근디 이 시키들(^^;;)이 안 적어 놓은 주의 사항이 있다..ㅡㅜ WritePrinter(lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten) 요걸로 출력시 한글에 문제가 있어 가볍게 웃으며 WritePrinter(lhPrinter, ByVal sWrittenData, LenB(sWrittenData), lpcWritten) 요렇게 고쳐서 해결을 본걸로 생각했는데.. SATO C..