오라클이 제공하는 문자열 관련 함수를 이용한 자료 검색 예제
문자열 처리 함수
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);
}
}
}
'JAVA > Oracle' 카테고리의 다른 글
오라클 - join 에 대한 설명 및 예제 (0) | 2016.06.18 |
---|---|
오라클 예제 - 날짜관련 함수 및 to_char 사용 예제 (0) | 2016.06.18 |
오라클 예제 - lower() 와 trim을 이용한 sql 명령어 (0) | 2016.06.18 |
오라클이 제공하는 문자열 관련 함수를 이용한 자료 검색 (0) | 2016.06.18 |
오라클이 제공하는 수학관련 함수를 이용한 자료 검색 (0) | 2016.06.18 |