[Oracle] SQL 단일행 함수 - 일반 함수 nvl(), decode(), case 구문
1) nvl() : null값을 다른 값으로 변환해주는 함수. nvl(컬럼,치환할 값) nvl(bonus,0) : bonus 컬럼의 값이 null인 경우는 0으로 변환. null이 아니면 bonus값. 예시 : 교수의 이름, 연봉(급여*12+보너스) 출력하기 select name, pay*12+nvl(bonus,0) 연봉 from professor; 문제 : 1. 학생의 이름과 지도교수번호(profno)출력하기. 단 지도교수가 없는 학생의 지도교수번호는 9999로 출력하기. select name,nvl(profno,9999) profno from student; 문제 : 2. 부서테이블(department)에서 부서코드(deptno)와 부서명(dname),건물명(build) 출력하기 단 건물명이 없는 학..
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 날짜 관련 함수 sysdate, months_between, add_months, next_day, last_day
1) sysdate : 시스템의 현재 날짜와 시간 리턴. 예약어 select ayadate from dual; 2) months_between : 두날짜 사이의 개월수 리턴. 소숫점 표현됨. 큰날짜 먼저 기입.(큰날짜 : 최근날짜 를 의미) months_between(날짜1,날짜2) // 날짜1-날짜2 차이의 개월 수 예시 : 2022.01.01부터 현재까지의 개월 수 select months_between(sysdate,'22/01/01') from dual; 문제 : 1. 학생의 이름,생일(birthday),개월 수,나이를 출력. 이때 개월 : 현재날짜에서 생일까지의 개월 수를 반올림하여 정수출력 나이 : 개월/12 하여 버림하여 정수로 출력. select name,birthday,round(mont..
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 숫자 함수 round, trunc, mod, ceil, floor, power, abs, sign
1) round : 반올림 숫자 round(12.345,2) -> 12.35 round(칼럼||숫자,표시되는 소숫점 이하 자리수) 예시 : select round(12.5123) r1, round(12.5123,0) r2, round(12.5123,1) r3, round(12.5123,2) r4, round(12.5123,3) r5 from dual; //r1 -> 12, r2 -> 12, r3 -> 13, r4 -> 12.5, r5 -> 12.51 2) trunc: 버림 함수 trunc(12.345,2) -> 12.34 trunc(칼럼||숫자,표시되는 소숫점이하 자리수) 예시 : select trunc(12.5123) t1, trunc(12.5123,0) t2, trunc(12.5123,1) t3, t..
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 문자 함수(문자열 치환 함수) replace
13) replace : 주어진 문자열에서 특정 문자를 다른 문자로 치환함. replace(‘AB’,’A’,’E’) -> EB replace(칼럼명,'문자1','문자2') // 칼럼의 값에서 문자1을 문자2로 치환. 예시 : '1234'문자열에서 '12'문자를 'ab'로 치환 select replcace('1234','12','ab') from dual; 문제 : 1. 학생테이블에서 학생의 이름의 첫자만 #문자로 변경하여 학생의 이름,학년 출력하기. select grade,replace(name,substr(name,1,1),'#') name from student;
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 문자 함수(문자 추가,제거 함수) lpad, rpad, ltrim, rtrim, trim
8) lpad : 왼쪿에 문자 추가 lpad(‘love’,6,’*’) -> **love lpad(문자열(칼럼),전체자리수,왼쪽채워지는 문자) 9) rpad : 오른쪽에 문자 추가 rpad(‘love,’6,’*’) -> love** rpad(문자열(칼럼),전체자리수,오른쪽 채워지는 문자) 예시 : 학생의 id를 10자리로 빈자리는 왼쪽에 $로 채워 이름,학년,id를 출력하기. select name, grade, lpad(id,10,$) from student; 10) ltrim : 왼쪽에 지정된 문자를 제거 ltrim(‘*love’,’*’) -> love ltrim(칼럼,제거할문자) //제거할 문자가 생략되면 공백으로 대체 문제 : 교수테이블에서 hpage 칼럼의 hppt://문자를 제거하여 url만 출력..
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 문자 함수(문자열의 길이) length, lengthb, substr, instr
4) length : 문자열 길이 length(‘한글’) -> 2 5) lengthb : 저장하기 위해 필요한 바이트 수 영어, 숫자 저장 시 1바이트 필요. 한글을 저장 시 3바이트 필요. → 시스템 마다 다르다. lengthb(‘한글’) -> 4 예시 : select lengthb('홍길동') from dual; dual 테이블 : 더미 테이블. 오라클에서 의미없는 테이블로 사용 할 수 있도록 생성된 테이블. 6) substr : 부분 문자열 함수 substr(‘ABC’,1,2) -> AB substr(칼럼 명,1부터 시작하는 인덱스,글자수) ← 공백도 셈함. substr(칼럼 명,음수부터 시작하는 인덱스(뒤부터),글자수) - ex) 시작 인덱스 : -1 => 뒤에서 첫번째 -2 => 뒤에서 두번째 ..
2023. 4. 14.
[Oracle] SQL 단일행 함수 - 문자 함수(대소문자 변환 함수) initcap, upper, lower
1) initcap : 첫문자만 대문자로 변환 initcap(‘abcd’) -> Abcd //문자열 중간에 공백이 있는 경우, 단어의 시작부분이 대문자로 바뀐다. 2) upper : 대문자로 변환 upper(‘abcd’) ->ABCD 3) lower : 소문자로 변환 lower(‘ABCD’) -> abcd 예시 : 1. 학과번호1이 101학과 학생의이름,id를 출력하기. id는 첫문자만 대문자로, 전부 대문자로, 전부 소문자로 출력하기. select name,id,initcap(id),upper(id),lower(id) from student where deptno1 = 101; 예시 : 2. emp테이블에서 사원의 이름이 smith인 사원의 이름,급여,부서코드 조회하기. smith 이름은 대소문자 상관..
2023. 4. 14.