방금 자료를 작업하면서 급하게 필요해서 찾은 기능인데 안 적어놓으면 바로 잊어버릴 것 같아서 기록해둡니다...
혹시 저처럼 필요하신 분이 계셔서 유용하게 사용할 수 있으면 좋겠네요...


1. 상황
     - 학생들 수험번호 부여 자료를 엑셀로 뽑았더니 C/S 화면과 다르게 학과명이 코드값으로 표시된다.
     - 학과코드와 학과명 자료가 별도로 있다.
     - 코드로 표시된 부분을 화면 표시와 같이 학과명으로 변경하고 싶다.

    1) 학번부여 뽑아낸 자료 - 시트명 : HAKBUN
   A  B  C  D
 1  학번 이름  학과  반 
 2  21100001  길라임  7  A
 3  21100002  이주원  7  B
 4  21100003  김비서  10  A

     2) 학과코드 자료 - 시트명 : HGCD
   A  B
 1  학과코드 학과명 
 2  7  경영과
 3  10  경제과

      --> HAKBUN 시트의 C열 값을 HGCD 시트 A열에 대응하는 B열 값으로 바꾸고 싶음.


2. 치환 방법 
      1) HAKBUN 시트 C,D열 사이에 새로운 열을 하나 삽입한다.
      2) 새로 삽입된 D열 2행에 다음 VB 코드를 복사해 넣는다.
                          =VLOOKUP(C2,HGCD!$A$2:$B$3,2,0)
                                            
        * VB 코드의 의미 :  C2      - 치환할 코드값이 시작하는 열과 행
                                   HGCD! - 치환할 때 참고 할 값이 들어 있는 시트명 (! 빼먹지 말것)
                                   $A$2    - 치환할 때 참고 할 값이 들어 있는 시트의 실제 값이 시작하는 열과 행
                                   $B$3    - 치환할 때 참고 할 값이 들어 있는 시트의 마지막 열과 행
                                   2         - 치환할 때 참고 할 값이 들어 있는 시트의 실제 치환될 값이 있는 열의 순서
        * 위 코드의 의미를 참고하여 적절하게 변경하여 적용하면 됩니다.  
      3) 값이 잘 치환돼 들어오는 걸 확인 후 복사하여 채우기 한다.
      4) 코드가 들어있는 C열을 없애고자 할 경우 치환된 D열을 복사하여 '선택하여 붙여넣기'로 값만 복사해 넣고
          C열을 삭제한다.

참고 1 : RPM 사용법 


# rpm -ivh source.rpm // source.rpm을 설치 

# rpm -Uvh source.rpm // source.rpm을 Upgrade 

# rpm -q source // source를 설치여부 확인 

# rpm -e source // source를 삭제 


참고 2 : Mount/unmount 사용법 

CD의 설치프로그램을 사용하기 위해서 CD 장치를 마운트 시켜야한다. 사용 후에 다시 자치를 해제하는 것이 unmount 하는 것이다. 마운트하기 위해서 장치의 형식( type )을 알아야한다. 하지만 우리가 흔히 사용하는 type은 다음과 같다. 


CD-ROM : iso9660 

A: : msdos 또는 vfat 

Hard Disk : ext2 


위의 3가지의 형식을 참조하여 다음과 같은 형식의 명령을 사용한다. 


mount -t 형식 장치명 마운트위치 


위에서 장치명은 일반적으로 다음과 같다. 


3.5" 플로피 : /dev/fd0 

IDE 하드디스크 : /dev/hda, /dev/hdb 

CD-ROM : /dev/cdrom 또는 /dev/hdc 


그리고 마운트 위치는 장치에 대해서 접근할 수 있는 디렉토리 명칭이다. CD-ROM 드라이브를 /ycson 디렉토리에 마운트 시켜보자. 


# mkdir /ycson 

# mount -t iso9660 /dev/hdc /ycson 

# ls /ycson // CD-ROM의 정보가 확인된다. 


또는 A: 드라이브를 /a:에 마운트하려면 


# mkdir /a: 

# mount -t msdos /dev/fd0 /a: 

# ls /a: // A: 드라이브의 정보가 확인된다. 


다음과 같이 마운트 장치를 해제하고 확인할 수 있다. 


# umount /a: // A: 드라이브 언마운트 

# umount /ycson // CD-ROM 드라이브 언마운트 

# ls /ycson // 빈디렉토리 


리눅스에서는 이러한 자주 접근하는 장치 목록과 부팅시 자동으로 마운트할 목록을 /etc/fstab에 기록하고 있다. CD-ROM, A: 드라이브 모두 저장매체의 형식을 기록하고 있으므로 일반적으로 다음과 같이 간략히 마운트/언마운트 할 수 있다. 


# mount /mnt/cdrom 

# mount /mnt/floppy 

# ls /mnt/cdrom // CD-ROM 드라이브의 내용을 확인 할 수 있다. 




참고 3 : 압축프로그램 사용법 

Unix/Linux/DOS에서 자주 사용되는 압축파일의 확장명과 연결 프로그램의 사용법은 다음과 같다. 


.Z // compress 를 사용하였다. 

$compress src // src.Z이라는 파일을 만든다. 

$uncompress src.Z // compress에 의해 압축된 프로그램을 푼다. 


.zip // zip/unzip을 사용하였다. 

$zip dest src // src를 압축하여 dest.zip이라는 파일을 만든다. 

$unzip -t dest.zip // dest.zip에 의해 압축된 프로그램을 본다. 

$unzip dest.zip // dest.zip에 의해 압축된 프로그램을 푼다. 


.gz // gzip에 의해서 압축하였을 때 생성되는 확장명이다. 

$gzip src // src.gz이라는 압축파일 생성 

$gzip -d src.gz // gzip에 의해 압축된 파일을 푼다. 

// gzip을 이용하면 원본 파일은 결과 파일만 남는다. 


.tar // tar에 의해서 압축된 파일이다. 

$tar cvf dest.tar source1 dir1 dir2 // source1 dir1 dir2을 묶어 dest.tar를 생성한다. 

$tar tvf dest.tar // dest.tar에 압축된 파일목록을 본다. 

$tar xvf dest.tar // dest.tar에 포함된 파일을 푼다. 


.tar.gz // tar + gz의 형식이다. 

$tar cvf dest.tar source1 dir1 dir2 // tar 파일 생성 

$gzip dest.tar // dest.tar.gz 파일 생성 

$gzip -d dest.tar.gz // dest.tar 생성 

$tar xvf dest.tar // dest에 포함된 파일을 풀어냄 


.tgz // tar + gz의 결합형 

$tar cvfz dest.tgz source1 dir1 dir2 // tgz 파일 생성 

$tar tvfz dest.tgz // dest.tgz에 포함된 내용물 보기 

$tar xvfz dest.tgz // dest.tgz 파일d에 포함된 내용을 풀어냄 

// tar.gz으로 압축된 경우는 tar [x|c|t]vfz에 의해 처리가 가능함 
가끔 sql을 통해 데이터를 뽑아내고자 할 때 어떤 기준에 의해 걸러진 가장 최신 데이터를 처리해야할 때가 있습니다.

예를 들면 기숙사 입사 신청자를 뽑고자 할 때 신청 학생의 성적중에서 가장 최근 것만 골라내고자 하는 경우가 있을 수 있습니다.

해당 학생이 전년도 혹은 전학기에 수강한 성적이 있으면 좋지만 그렇지 않고 휴학했다가 복학하는 경우에는 그냥 전년도 성적을 뽑으면 나오지 않기 때문에 해당 학생의 휴학 하기 전 마지막 성적 (이게 최근 성적이 되죠..)을 알아야 합니다..

이럴 때 RANK 기능을 사용하시면 됩니다. (오라클 DB를 기준으로 합니다만 아마 대부분 DB에서 비슷할 것으로 여겨집니다)

사용예제)
    SELECT  HB, YY, HK, PJ_PG, PJ_PGPK, RK
    FROM (SELECT HB, YY, HK, PJ_PG, PJ_PGPK, RANK() OVER (PARTITION BY HB ORDER BY YY DESC,
               HK DESC) AS RK FROM SKSJ_GYE )
    WHERE RK=1;

    - 구문의 의미 : 학생들이 각 학기마다 취득한 학점 합계를 최근 일순위만 뽑아서  학번순으로 표시해 줍니다.
           205---.   2006,   1,   4.5,     A+,   1
           206---.   2007,   2,   4.02,    A0,   1
           207---.   2008,   2,   4.15,    A0,   1
           208---.   2009,   2,   3.5,      B+,   1
           209---.   2009,   1,   3.68,    B+,   1

    - FROM 절에 핵심이 되는 SQL문이 들어갑니다. 
    - 이 SQL 문을 FROM 절에 넣어서 다시 돌린 것은 랭킹이 1인 즉, 가장 최근 데이터만 뽑기 위해서입니다.
    - FROM 절에 들어간 구문만 따로 실행하면 그룹핑한 값에 대해 여러개의 값이 있을 경우 최근 순서대로 
      랭킹이 매겨져서 표시됩니다.
           208---.   2009,   1,   4.5,     A+,   1
           208---.   2008,   2,   4.02,    A0,   2
           208---.   2008,   1,   4.15,    A0,   3
           209---.   2009,   2,   3.5,      B+,  1
           209---.   2009,   1,   3.68,    B+,  2

    
[ RANK() OVER (PARTITION BY HB ORDER BY YY DESC, HK DESC) AS RK ] 분석
   - PARTITION BY HB  : HB 라는 컬럼으로 데이터들을 Grouping 하겠다는 것입니다.
                                   그룹핑하기 원하는 컬럼명을 여기에 적으시면 되겠습니다.
   - ORDER BY YY DESC, HK DESC  : YY 컬럼을 최근 순으로 정렬하고, 다음에 HK 컬럼을 다시 정렬합니다.
                                   정렬하기 원하는 순서를 여기에서 정하시면 됩니다.
   

      
이 장소를 Daum지도에서 확인해보세요.
충청북도 청원군 강내면 | 충청대학
도움말 Daum 지도


function content_print(){
    
                var initBody = document.body.innerHTML;
                window.onbeforeprint = function(){
                    document.body.innerHTML = document.getElementById('선택될 div id').innerHTML;
                }
                window.onafterprint = function(){
                    document.body.innerHTML = initBody;
                }
                window.print();     
            }            
        </script>

===============================================================================================

<div id='content'>
    내용 content_1
</div>

<div id='content_2'>
   내용 content_2
</div>
<input type="button" value="print" onclick="javascript:content_print();">
================================================================================================

선택될 div id  이부분에 div id 를 삽입하면 된다.
print 버튼을 누르면 지정된 div 안의 내용이 프린트 된다.

웹상에서 다수의 입력항목이 있는 페이지에서 데이터를 입력하는 도중 실수로 [esc]나 [back space] 키를 누르면
History back으로 인식하여 새로 입력한 모든 정보가 날라갑니다.
그렇게 되고나면 복구도 불가능하고 오로지 다시 입력하는 수 밖에 없습니다.
사용자의 실수 방지 차원에서 가능한 잊지않고 넣으면 좋을 것 같습니다..


/*
 ******************************************
 * 2005-08-10
 * 박 이 수
 * esc와 back-space 클릭 방지
 ******************************************
 */
document.onkeydown=checkKey;

function checkKey(){
 //alert("You pressed a following key: "+window.event.keyCode);
 // ESC Key 누를 때 데이터 사라지는 것 방지
 if(window.event.keyCode == 27){
  window.event.returnValue = false;
  return;
 }

 // back-space 누를 때
 if(window.event.keyCode == 8){

  // TextEdit가 아니면 작동하지 않도록
  if(!window.event.srcElement.isTextEdit){
   window.event.returnValue = false;
   return;
  }else if(window.event.srcElement.readOnly || window.event.srcElement.disabled){
   // readOnly나 disabled인 경우 작동하지 않도록
   window.event.returnValue = false;
   return;
  }
 }
 
 event.returnValue = true;
}

 from   http://blog.paran.com/yisupark/5320870

이 장소를 Daum지도에서 확인해보세요.
충청북도 청원군 강내면 | 충청대학 정보관리실
도움말 Daum 지도


1. Jad와 JadClipse 파일 다운.
 
     지금 같이 올린 것은 Europa버전을 위한 것입니다. 각자 자신의 버전에 맞는 JadClipse를 받아야 합니다.

2. Jad.exe 를 적당한 경로에 놓습니다.

3. net.sf.jadclipse_3.3.0.jar 파일을 이클립스가 폴더 Plugin폴더에 복사합니다.

4. 이클립스 시작  -  Window -> Preferences -> Java -> JadClipse

5. 설정화면에서 Path to decompiler에 Jad.exe의 전체 경로를 화일이름까지 적는다.     
      예)C:\java\jdk1.4.12\bin\jad.exe 

    reuse code buffer, ignore existing source  옵션 선택 
    글자 깨짐 현상을 방지하기 위해  misc -   convert unicode strings into ANSI string  체크 

    여기까지하면 기본적인 설치는 된 것인데 사실 이 상태에서 class 화일을 더블클릭하면
 에디터가 없다면서  Decompile이 되지 않는다. 다음 설정을 해줘야 한다.

6. 클래스 파일이 들어있는 폴더 추가. 
     
프로젝트 이름 오른쪽 버튼 클릭 -> Properties  ->
Java Build Path  -> Libraries 탭 
     -> Add Class Folder  -> Create New Folder -> Advanced
     -> Link to folder in the file system 체크 -> Browse..  클릭해서 클래스 폴더 지정
               
7. 확인하고 빠져나와서 프로젝트 화면에 보면 추가한 클래스 폴더가 보이고 그 안에서 적당한 클래스 파일을 찾아
     클릭하면  역컴파일된 소스가 에디터 창에 보인다.

 * 현재까지 발견한 Jadclipse 사용방법이다.
   혹시 더 편리한 방법을 발견하신 분은 댓글 부탁드립니다.

이 장소를 Daum지도에서 확인해보세요.
충청북도 청원군 강내면 | 충청대학 정보관리실
도움말 Daum 지도
  1. Favicon of http://shinlucky.tistory.com BlogIcon shinlucky 2009.12.08 00:22

    오옷 감사합니다. ^_^
    5번에서 저도 에러가 발생했는데
    이후에 따라하니 잘되더군요.

    도스에서 일일이 jad실행하다 귀찮아서 이클립스에서 보면서 하니 매우 편하군요
    감사합니다. ^_^

  2. 박상희 2012.03.22 10:27

    감사합니다^^ 많은 도움이 되었어요

<html파일>

<div id="print_content">

<table>

  <tr>

    <td>출력할 부분</td>

  </tr>

</table>

</div>

 

<a href="javascript:print_content('serviceaddress');"><img src="img/button2.gif" border="0" width="57" height="22" style="cursor:hand"/></a>                                   

 

[js파일]

/* 특정 부분을 출력할때 쓰임 */
function print_content(p_service){
 //alert("dfdf");
 window.open("/html/print_content.html","","directories=0,location=0,menubar=0,scrollbars=0,toolbar=0,width=500,height=500, left=5000, top=5000;");

// left와 top의 위치를 5000으로 해서 화면에는 안보이게 한다.
}

 

[print_content.html]

<html>
<head>
<link rel="stylesheet" type="text/css" href="/ktf/css/css.css">
</head>
<body onLoad="window.close();">
<form name="testform">
<input type="hidden" name="data" value>
</form>
<script language="javascript">
 {
  var print_all;
  (document.testform.data.value = window.opener.document.all.print_content.innerHTML);
  print_all = (document.testform.data.value);
  document.write (print_all);
  window.print();
 }
</script>
</body>
</html>

*********************************************************

출력버튼을 클릭하면 출력하는 화면이 뜨고 인쇄를 클릭하면

div태그에 쌓여진 부분만 출력하게 된다..

from.  http://blog.naver.com/flydrago?Redirect=Log&logNo=40005671910   김경용

Tomcat이 설치된 경로: C:/Tomcat/
새로 생성하여 사용할 Context 경로: d:/myhome

현재 Tomcat이 설치된 경로의 webapps/ROOT 폴더를 복사해서 d:/ 아래에 붙여 넣고
d:/ROOT 의 폴더명을 myhome로 변경한다.

Tomcat/conf/server.xml 파일을 열고 내용의 하단부에 다음과 같이 선언해 준다.

  <!--Context path="" docBase="ROOT" reloadable="true" debug="0"/-->
  <Context path="" docBase="d:/myhome" reloadable="true" debug="0"/> <!--ROOT 폴더 변경-->

  <Context path="/sugang" docBase="d:/SugangTG" debug="0" reloadable="true" /> <!--신규 Deploy-->

      </Host>

    </Engine>

  </Service>

</Server>


Tomcat을 다시 실행한다.
http://localhost 으로 접속한다. 그러면 myhome폴더로 Context가 설정되어 있기 때문에 이곳에 있는 파일이 브라우저에 출력된다.

http://localhost/sugang 으로 접속한다. 그러면 설정된 디렉토리에 있는 파일이 브라우저에 출력된다.


1) 현재 ip-address 확인 방법

# ifconfig -a (모든 interface 확인)
# ifconfig eri0 (eri0 네트웍 카드만 확인 )
# man eri (eri 네트웍 카드를 알 수 있음.)

2) 현재 eri 네트웍 카드의 ip-address 변환 방법
# ifconfig eri0 inet 10.1.1.60

3) ethernet address 변환 방법
# ifconfig eri0 ether 0:3:ba:4e:3c:4c

4) netmask 변경
# ifconfig eri0 netmask 255.255.0.0 broadcast +

5) 네트웍 카드 enable /disable
# ifconfig eri0 down <== disable
# ifconfig eri0 up <== enable

6) 네트웍 카드 plumb /unplumb
# ifconfig eri0 unplumb <== 네트웍 카드 제거
# ifconfig eri0 plumb <== 네트웍 카드 설정

7) 네트웍 카드 초기화
# ifconfig eri0 plumb 203.234.247.60 netmask 255.255.255.0 broadcast
+ up

8) rebooting 후에도 계속 사용하고자 할 때 설정하는 파일
# vi /etc/hostname.eri0 <== 네트웍 카드 이름으로된 파일을 생성
203.234.247.60
또는
sun60

9) 만일 'sun60' 처럼 host이름으로 사용시 hosts 파일에 기록
# vi /etc/hosts
203.234.247.60 sun60

10) 가상 interface 설정 방법 (복수의 ip-address 설정)
# ifconfig eri0 addif 10.1.1.10 up
# ifconfig eri0 addif 10.1.1.11 up

11) 가상 interface 제거 방법
# ifconfig eri0:1 unplumb
또는
# ifconfig eri0 removeif 10.1.1.11

12) booting 시 자동으로 가상 Interface 설정 방법
# vi /etc/hostname.eri0
sun60 up
addif 10.1.1.1 netmask 255.255.255.0 broadcast + up
addif 10.1.1.2 netmask 255.255.255.0 broadcast + up
# init 6

from  http://serings.tistory.com/79
문자열 처리 함수(Character Functions)

CONCAT(char1, char2)

CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 합니다.
"
||" 연산자와 같은 역할을 합니다.







SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;

                NAME
   -------------
   Oracle Korea


INITCAP(char)


주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 줍니다.

SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;

             NAME
 -------------
  Kim jung sick


LOWER(char)


문자열을 소문자로 변환 시켜 줍니다.


UPPER(char)

문자열을 대문자로 변환 시켜 줍니다.

SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;

            NAME
-------------
  kim jung sick
SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;

            NAME
--------------
KIM JUNG SICK


LPAD(char1, n [,char2])


  왼쪽에 문자열을 끼어 놓는 역할을 합니다. n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환합니다.

SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;

          NAME
------------
 *JUNG-SICK


RPAD(char1, n [,char2])


LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 합니다.
SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;

          NAME
------------
  JUNG-SICK*


SUBSTR(char, m ,[n])


  SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한 합니다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환합니다.
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;

          NAME
-----------
            NG-
-- 뒤에서부터 자를
SQL>SELECT SUBSTR('JUNG-SICK', -3, 3)
NAME FROM dual ;

        NAME  
-----------
          ICK


LENGTH(char1)


문자열의 길이를 리턴 합니다.
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;

      TEST
   ----------
           9


REPLACE(char1, str1, str2)


REPLACE는 문자열의 특정 문자를 다른 문자로 변환 합니다.

SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
 
Changes
--------------
BLACK and BLUE
 
 
 
SQL> SELECT REPLACE('JACK and JUE','JA','BL')
"Changes" FROM DUAL
 
Changes
------------
BLCK and JUE
 
 
-- 대소문자를 구분한다는 것을 알수 있습니다.
SQL>SELECT REPLACE('JACK and JUE','j','BL')
"Changes" FROM DUAL
 
Changes
------------
JACK and JUE


INSTR

 - 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환합니다.
 - 지정한 문자열이 발견되지 않으면 0이 반환 됩니다.
 

-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OK')  "Instring" FROM DUAL
 
  Instring
----------
         0


-- OR이 있는 위치 2를 반환 합니다. 왼쪽부터 비교를 한다는 것을 알 수 있습니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR')  "Instring" FROM DUAL
 
  Instring
----------
         2
 

-- 왼쪽에서 3번째부터 시작을 해서 비교를 합니다. 2번째 OR의 위치가 반환 됩니다.
SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3)  "Instring" FROM DUAL
 
  Instring
----------
         5


-- 왼쪽에서 3번째부터 시작을 해서 비교를 하는데  OR이 두 번째 검색되는 지점의 위치를 반환 합니다.
SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2)  "Instring" FROM DUAL;
 
  Instring
----------
       14
 


TRIM


 - 특정한 문자를 제거 합니다.  
 - 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됩니다.
 - 리턴값의 데이터타입은 VARCHAR2 입니다.
 

-- 0을 제거 합니다.
SQL>SELECT TRIM(0 FROM 0009872348900)  "TRIM Example" FROM DUAL;
 
TRIM Example
------------
98723489
 
 
-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됩니다.  
-- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다르게 나오는 것을 알 수 있습니다.

SQL>SELECT NVL(TRIM ('  '),'공백')  "TRIM Example"  FROM DUAL
 
TRIM Example
------------
공백
 
 
SQL>SELECT NVL('  ','공백')  "TRIM Example" FROM DUAL
 
TRIM Example
------------
 

 


LTRIM

SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example"  FROM DUAL;
 
LTRIM example
------------
XxyLAST WORD
 
 
RTRIM


SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example"     FROM DUAL;

RTRIM examp
-----------
BROWNINGyxX
Character Functions
CHR
CONCAT
INITCAP
LOWER
LPAD
LTRIM
NLS_INITCAP
NLS_LOWER
NLSSORT
NLS_UPPER
REPLACE
RPAD
RTRIM
SOUNDEX
SUBSTR
TRANSLATE
TREAT
TRIM
UPPER
ASCII
INSTR
LENGTH

검색 중에 우연히 발견했습니다.

원본은 네이버 어느 카페 자료인거 같은데 형변환 관련된 오라클 함수들이 잘 나와 있네요..


----------------------------------------------------------------------------

이번에 소개해드릴 내용은 SELECT와 여러가지의 연산자와 함수들을 간단히 이용한

데이터를 변환시키는 방법 입니다.

먼저 데이터의 형(Data type)에 대해 공부를 하신후 이어서

여러가지 문자열 처리 함수, 수치형 처리 함수, 날짜데이터 처리용 함수 등에 대해서

차근차근 보실 겁니다. ^_^

비교적 간단하며 어렵지 않으니 쉽게 보실 수 있으실 겁니다..

 

오라클의 데이터 형은 이렇게 하나의 표로 보실 수 있습니다.

사용자 삽입 이미지

간단히 살펴 보시면....   CHAR형은  CHAR(10)의 형으로 적혀야 하며..

NUMBER형은 NUMBER 나 NUMBER(5, 3) 의 형으로 적혀야 한다는걸 아실 겁니다.

일케 많은 데이터 형이 있고.. 이 데이터 형에 대해 간단히 알아 보도록 하지요..

 

- 생성되어 있는 데이터 형의 자료 요약.


코드 데이터 형설    명

1

VARCHAR2(size) 

문자열형이며 가변길이 자료형으로  1~4000 byte까지 저장 가능

입니다.

1

NVARCHAR2(size) 

문자열형이며 가변길이 자료형으로  1~4000 byte까지 저장 가능

입니다.  국가 코드에 의존적 입니다.

2

NUMBER(p,s) 

정확도와 크기를 가질 수 있습니다.

정확도는 1~38 까지이며 크기는 -84 ~ 127까지 입니다.

8

LONG 

2기가 까지 저장가능한 가변길이 문자열형 입니다.

12

DATE 

정형화된 날짜 데이터형으로

기원전 14712 1월 1일부터 319999년 12월 31일 까지 표현 가능 합니다.

23

RAW(size) 

이진 데이터의 길이를 의미 합니다.

2000 btte 까지 저장 가능하며 반드시 size를 지정 해야 합니다.

24

LONG RAW 

이진 데이터의 길이를 의미하며 2기가까지 저장 가능 합니다.

69

ROWID 

16진수의 수로 이루어지며 색인에 의해 구축되는 로우의

고유한 주소 입니다. 참고로 ROWID라는 가상의 컬럼에

소속 됩니다.

208

UROWID [(size)] 

16진수의 수로 이루어지며 색인에 의해 구축되는 로우의

논리적인 주소 입니다. 참고로 ROWID라는 가상의 컬럼에

소속 되며 size는 이 컬럼의 길이를 의미하게 됩니다.

96

CHAR(size) 

고정길이 문자열 형으로 1~2000 byte를 저장합니다.

96

NCHAR(size) 

고정길이 문자열 형으로 1~2000 byte를 저장합니다.

국가 코드에 의존적입니다.

112

CLOB 

정형화 되지 않은 문자열형 자료를 저장합니다.

최대 4기가 까지 저장이 가능 합니다.

112

NCLOB 

정형화 되지 않은 문자열형 자료를 저장합니다.

최대 4기가 까지 저장이 가능 합니다.

국가 코드에 의존적입니다.

113

BLOB 

정형화 되지 않은 이진 데이터를 저장하며 최대 4기가 까지

저장이 가능합니다.

114

BFILE 

정형화 되지 않은 이진 데이터를 데이터 베이스 외부에

저장하며 최대 4기가 까지 저장이 가능합니다.



대략적인 데이터 형에 대해서 알아 보셨습니다.

조금 골치가 아프 시다면 그러구나... 하고 넘어가셔도 무방하답니다. ^_^

앞으로 배우면서 참조하셔도 충분 하답니다.

 

이번엔 연산자에 대해서 알아 보시겠습니다. ^_^

오라클의 연산자 우선순위~

연산자

+, -

*, /

+, -, ||

=, !=, <, >, <=, >=, IS NULL, LIKE, BETWEEN, IN

NOT

AND

OR

간단히 예를 들어 본다면... 1+2*3은 값이 얼마가 될까요?

2*3이 먼저 계산이 되므로 1+5가 되어 값은 6이 될겁니다.

 

수치형 연산자.

+ , -, *, / 가 있습니다.  뻔한 이야기 인가요?

예를 보여 드리면..

 

SELECT ename, sal, sal*1.1 FROM emp;

 

이런 식이 되지요..

주로 수치형 데이터와 연관이 된다는 걸 아실 겁니다. ^_^

 

연결 연산자

연결연산자는 따악 1개 뿐입니다.  

바로 || 입니다.

역시나 간단한 예를 보여 드리면

 

SELECT '이름은 : ' || ename FROM emp;

 

이런 식이랍니다.


    strQuery  = "  SELECT GB_NM, BS_NM FROM IS_KM WHERE JW_BH = 1000001 ";

    rs = stmt_result.executeQuery(strQuery);

    rs.last();  //앞에 글 중 ResultSet 마지막값 관련 글 참고

    int numRow    = rs.getRow();
    String[] GB_NM    = new String[numRow];
    String[] BS_NM    = new String[numRow];

    rs.beforeFirst();

    for(int i=0;rs.next();i++) {
        GB_NM[i] = checkNull(rs.getString("GB_NM"));
       GB_NM[i] = checkNull(rs.getString("GB_NM"));
     }
     rs.close();

stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);


ResultSet rs = stmt.executeQuery( "SELECT LAST_NAME, FIRST_NAME FROM EMPLOYEES");
rs.last();
int numberOfRows = rs.getRow();
System.out.println("XYZ, Inc. has " + numberOfRows + " employees");
rs.beforeFirst();
while (next()) {
    . . . // retrieve first and last names of each employee
}


1.자동 띄우기
팝업창에 삽입
<html>
<head>
<title></title>
<script language="javascript">
<!--
function pop(){
window.open("팝업창파일", "pop", "width=400,height=500,history=no,resizable=no,status=no,scrollbars=yes,menubar=no")
}
//-->
</script>
</head>
<body onload="javascript:pop()">
이벤트 팝업창을 띄우기
</body>
</html>  

2.프레임이 있는 팝업창 닫기
팝업창에 삽입
<html>
<head>
<title></title>
<script language="Javascript">
<!--
function frameclose() {
parent.close()
window.close()
self.close()
}
//-->
</script>
</head>
<body>
<a href="javascript:frameclose()">프레임셋 한방에 닫기</a>
</body>
</html>

3.팝업창 닫고 프레임이 없는 부모창에서 원하는 페이지로 이동하기
팝업창에 삽입
<html>
<head>
<title></title>
<script language="javascript">
<!--
function MovePage() {
window.opener.top.location.href="연결할파일"
window.close()
}
//-->
</script>
</head>
<body>
<a href="javascript:MovePage();">자세한내용보기</a>
</body>
</html>

4.팝업창 닫고 프레임이 있는 부모창에서 원하는 페이지로 이동하기
팝업창에 삽입하고 팝업창의 설정은 프레임셋 페이지에 해야함
오픈창이 아닐경우에는 window.top.프레임이름.location.href="연결할파일" 적용한다
<html>
<head>
<title></title>
<script language="javascript">
<!--
function MovePage() {
window.opener.top.프레임이름.location.href="연결할파일"
//팝업창이 아닌것우..
window.close()
}
//-->
</script>
</head>
<body>
<a href="javascript:MovePage();">자세한내용보기</a>
</body>
</html>

5.팝업창 자동으로 닫기
팝업창에 삽입
<html>
<head>
<title>Close Window Timer</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<script language="JavaScript">
<!--
function closeWin(thetime) {
setTimeout("window.close()", thetime); //1000 은 1초를 의미합니다.
}
//-->
</script>
</head>
<body onLoad="closeWin('5000')">
이창은 5초후 자동으로 창이 닫힘니다.<br>
</body>
</html>

아래 명령 옵션 사용


        tar  cvf  archive.tar ./*  --exclude  ./data   .\*.avi
 
                      - data디렉토리와 확장자 mp3 화일만 빼고 전부다 tar로 묶는다
  1. 보노 2010.01.29 12:40

    .avi 빼고 묶는게 아닌가요 ? ...
    좋은자료 감사합니다 ..
    나중에 이미지 모을때 좋겟군요 ..

+ Recent posts