본문 바로가기

JAVA/Oracle

오라클 예제 - 문자열 관련 함수를 이용한 자료 검색 예제

반응형

오라클이 제공하는 문자열 관련 함수를 이용한 자료 검색 예제


문자열 처리 함수

trim, ltrim, rtrim

substr(문자열값, 시작위치, 글자수) 위치는 1부터 시작

instr(문자열값, 찾고자하는 글자)


lpad, rpad

데이터 출력시에 폭(자리)를 잡아 출력하되 빈칸은 특정글자로 채우는 기능

형식)

lpad(데이터값, 폭, 채울글자)


예)

lpad(5000,10,'*');

[*][*][*][*][*][*][5][0][0][0] // 결과값 : ******5000


rpad('hello',12,'*');

[h][e][l][l][o][*][*][*][*][*][*][*] // 결과값 : hello*******


replace

특정 문자열의 내용을 바꾸기 위한 기능


형식)

(문자열값, 원래문자, 바꿀문자)

예)

replace ('hello java', 'java','자바')



연습)


개발 1부에 근무하는 여성 근로자의 정보를 출력하시오.

사원명, 이메일, 주민번호, 연봉을 출력하되

이메일은 10자리를 잡아 출력하되 앞의 두글자만 나타내고 나머지는 '*' 로 표시한다.

주민번호는 13자리로 잡아 출력하되 앞의 4자리만 출력하고 나머지는 '*'로 표시한다.

연봉이 높은순으로 출력하고 동일할때에는 사원이름 순으로 출력한다.


select name, 

(rpad(substr(email, 1, 2) , 10, '*')) email , 

(rpad(substr(jumin,1,4), 13, '*')) jumin, 

nvl(sal,0)*12 annsal

from emp 

where dname='개발1부' and substr(jumin,8,1) = '2'

order by nvl(sal,0)*12 desc, name;



문자열의 길이를 알려주는 함수

length(문자열값)


연습문제에서 이메일 폭의 길이만큼 잡기)

select name, (rpad(substr(email, 1, 2) , length(email), '*')) email , 

(rpad(substr(jumin,1,4), 13, '*')) jumin, 

nvl(sal,0)*12 annsal

from emp 

where dname='개발1부' and substr(jumin,8,1) = '2'

order by nvl(sal,0)*12 desc, name;





** 위에 예제를 프로그래밍 하여 만들기


/*


사용자로부터 부서명과 성별을 입력받아 해당 근무자의 정보를 출력하는 프로그램을 작성합니다.


사원명, 이메일, 주민번호, 연봉을 출력하되

이메일은 10자리를 잡아 출력하되 앞의 두글자만 나타내고 나머지는 '*' 로 표시한다.

주민번호는 13자리로 잡아 출력하되 앞의 4자리만 출력하고 나머지는 '*'로 표시한다.

연봉이 높은순으로 출력하고 동일할때에는 사원이름 순으로 출력한다.

*/


import java.util.*;

import java.sql.*;


class SqlTest02{

public static void main(String[] args) {


Scanner sc = new Scanner(System.in);

String i;

int j;


System.out.println("부서명을 입력해");

i = sc.next();

System.out.println("성별을 입력해 [1]남자[2]여자");

j = sc.nextInt();


String sql = "select name, (rpad(substr(email, 1, 2) , length(email), '*')) email , "

+"(rpad(substr(jumin,1,4), 13, '*')) jumin, nvl(sal,0)*12 annsal from emp where dname = '"+i+"' "

+"and substr(jumin,8,1) = '"+j+"' order by nvl(sal,0)*12 desc, name";


try{


Class.forName("oracle.jdbc.driver.OracleDriver");


String url = "jdbc:oracle:thin:@203.236.209.141:1521:XE";

String user = "scott";

String pwd = "tiger";

Connection conn = DriverManager.getConnection(url, user, pwd);


Statement stmt = conn.createStatement();


ResultSet rs = stmt.executeQuery(sql);


while (rs.next()){

String name = rs.getString(1);

String email = rs.getString(2);

String jumin = rs.getString(3);

int sal = rs.getInt(4);


System.out.println("사원명 : " + name + "\t" + "이메일 : " + email + "\t" + "주민번호" + jumin + "\t" + "연봉 : " + sal);

}


rs.close();

stmt.close();

conn.close();


}catch (Exception e){

System.out.println(e);

}

}

}



반응형