본문 바로가기

반응형

Story

string split 구분자로 저장된것을 다른 테이블과 join ex ) select SQL_CALC_FOUND_ROWS pm.*, count(b.b_no) as cnt from product_month pm left outer join books b on concat(',',pm.pm_books_list,',' ) like concat('%,',b.b_no,',%' ) where pm.p_id = 1 group by pm.p_id, pm.pm_no order by pm.pm_no asc 위의 query 문의 설명을 하자면 pm.pm_books_list 에 저장된 값이 "1,2,3,4" 와 같은 문자열로 되어있다 join 되는 books 테이블의 key 인 b_no 값들을 pm_books_list 에 저장된 값과 비교하는것이다. b_no 값을 ",키값," 형태로 바꾸.. 더보기
sendmail virtusertable 한서버에 여러개의 메일 사용시 방법 1. /etc/mail/local-host-names 파일에 사용하려는 도메인을 적어준다. # local-host-names - include all aliases for your machine here. aaa.co.kr bbb.co.kr 이 파일을 수정하면 sendmail 을 재시작해야지 적용된다. 2. /etc/mail/virtusertable 파일을 열어 aaa@aaa.co.kr bbb_aaa 와 같이 수정한다 makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable 명령어로 적용시킨다. 이와 같이 셋팅하면 aaa@aaa.co.kr 로 메일을 보냈을때 bbb_aaa 계정으로 확인이 가능해진다. 참고로 메일 계정 추가 방법은 adduser bb.. 더보기
주민등록번호 체크 /***** * 주민등록번호 체크 * return : boolean * ex) 111111-1111111 * TODO : 주민등록번호 뒷자리 첫번째 자리에 7,8 로 시작하는 주민등록 번호가 있다. 이것은 귀화한 사람에게 발급되는 번호라고 한다 * 할 수 있다면 체크했으면 좋겠는데 아직은 위의 번호를 가진 사람도 보지 못했거니와 유효성도 같은 방식으로 해야 하는지 알지 못하겠다. *****/ function check_regnum(resno){ // 주민번호의 형태와 7번째 자리(성별) 유효성 검사 fmt = /^d{6}-[1234]d{6}$/; if(!fmt.test(resno)) return false; // 날짜 유효성 검사 birthYear = (resno.charAt(7) 더보기
법인번호 체크 /***** * 법인번호 체크 * return : boolean * ex) 111111-1111111 *****/ function check_corpnum(resno){ fmt = /^d{6}-d{7}$/; if(!fmt.test(resno)) return false; // Check Sum 코드의 유효성 검사 buf = new Array(13); for (i = 0; i < 6; i++) buf[i] = parseInt(resno.charAt(i)); for (i = 6; i < 13; i++) buf[i] = parseInt(resno.charAt(i + 1)); multipliers = [1,2,1,2,1,2,1,2,1,2,1,2]; for (i = 0, sum = 0; i < 12; i++) su.. 더보기
사업자등록번호 체크 /***** * 사업자등록번호 체크 * return : boolean * ex) 111-11-11111 *****/ function check_worknum(resno) { fmt = /^d{3}-d{2}-d{5}$/; if(!fmt.test(resno)) return false; // Check Sum 코드의 유효성 검사 buf = new Array(10); for (i = 0; i < 3; i++) buf[i] = parseInt(resno.charAt(i)); for (i = 3; i < 5; i++) buf[i] = parseInt(resno.charAt(i + 1)); for (i = 5; i < 10; i++) buf[i] = parseInt(resno.charAt(i + 2)); multip.. 더보기
input box 에 background images 넣기 인풋상자 배경으로 이미지를 넣는 예이다. http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/backgroundpositiony.asp 이곳을 통해 자세한 내용 살펴볼 수 있고 링크들을 통해 설정값들에 대해 살펴볼수있다. 참고로 tabindex 는 탭키를 눌렀을때 이동순서를 지정할 수 있는것이다. 더보기
file 필드에 임의의 값을 강제로 입력시 submit 안될경우 var fileVal = false; try{ var xdoc = new ActiveXObject("Msxml.DOMDocument"); xdoc.async = false; xdoc.load(tar.nm_file.value); }catch(e){ if (xdoc.parseError.errorCode != 0) fileVal = true; } if(!fileVal){ currentObj = document.getElementById('nm_file'); parentObj = currentObj.parentElement parentObj.removeChild(currentObj); parentObj.appendChild(currentObj.cloneNode(true)); } input type file 에 .. 더보기
Oracle 관련 유용한 사이트 http://network.hanbitbook.co.kr/print.php?bi_id=537 - 오라클 Datbase에서의 TOP N Query http://www.akadia.com/services/ora_analytic_functions.html - Analytic Functions in Oracle 8i and 9i http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html - Writing Better SQL Using Regular Expressions 더보기
input 상자안에 숫자값만 입력 받기 function onlyNumber() { // onkeypress 나 onkeydown 등에 사용하도록 // omkeydown="return onlyNumber();" if( (window.event.keyCode == 8) || (window.event.keyCode == 46) || ((window.event.keyCode>=96) && (window.event.keyCode 더보기
문자길이 체크 if(!String.bytes) String.prototype.bytes = function(){ var i, j=0; for(i=0;i 더보기

반응형