728x90
반응형

함수

  • 어떤 입력값을 받아서 정해진 루틴에 의해 작업을 하고 결과값을 만들어서 출력해주는 것을 말한다.

 

SQL에서 사용되는 함수는 단일 행 함수와 복수 행 함수로 구분할 수 있다.

 

단일 행 함수

  • 여러 건의 데이터를 한꺼번에 처리하는 것이 아니라 한번에 하나씩 처리하는 함수

 

복수 행 함수

  • 여러 건의 데이터를 동시에 입력 받아서 결과값 1건을 만들어주는 함수

 

문자 함수

[그림1] 문자 함수 출처 : https://rosebud90.tistory.com/entry/SQL-%EB%8B%A8%EC%9D%BC%ED%96%89-%ED%95%A8%EC%88%98

 

 

1. INITCAP 함수

  • 첫 글자만 대문자로 출력하고 나머지는 전부 소문자로 출력하는 함수
문법 : INITCAP(문자열 또는 칼럼명)

 

예제

  1. Student 테이블 사용해 1전공이 201번인 학생들의 ID를 첫 글자만 대문자료 출력
  2. ID 칼럼 값 출력 첫 글자만 대문자로 변경해 출력
SELECT INITCAP(ID) FROM STUDENT WHERE deptno1 = 201;

[그림1] 1전공 201번

 

SELECT INITCAP('Preety girl') FROM DUAL ;

[그림2] 첫 글자만 대문자로

 

2. LOWER 함수

  • 입력되는 값을 소문자로 변경해 출력
문법 : LOWER(문자열 또는 칼럼명)

 

3. UPPER 

  • 입력되는 값을 전부 대문자로 변경해 출력
문법 : UPEER(문자열 또는 칼럼명)

 

예제

  1. Student 테이블에서 1전공이 201번인 학생들의 ID를 이름과 함께 소문자, 대문자로 출력

 

SELECT LOWER(ID) FROM STUDENT WHERE deptno1 = 201;

[그림3] 소문자

SELECT UPPER(ID) FROM STUDENT WHERE deptno1 = 201;

[그림4] 대문자

 

 

4. LENGTH / LENGTHB 함수

  • 입력된 문자열의 길이(바이트 수)를 계산해주는 함수
문법 : LENGTH(칼럼 또는 문자열) / LENGTHB(칼럼 또는 문자열)

 

예제

  1. Student 테이블에서 ID가 9글자 이상인 학생들의 이름과 ID와 글자수를 출력하시오.
  2. Student 테이블에서 1전공이 201번인 학생들의 이름과 이름의 글자수, 이름의 바이트 수를 출력하시오.
문법 : CONCAT('문자열1' , '문자열2')
SELECT name AS 이름, ID, LENGTH(ID) FROM STUDENT WHERE LENGTH(ID) > 9;

[그림5] 예제1 9글자 이상

SELECT name AS 이름, LENGTH(name), LENGTHB(NAME) FROM STUDENT WHERE deptno1 = 201;

[그림6]예제2 전공1 201번

 

 

5. CONCAT 함수(|| 연산자와 동일한 기능)

문법 : CONCAT('문자열1' , '문자열2')

 

예제

  1. Professor 테이블에서 교수들의 이름과 직급을 출력하시오.
SELECT CONCAT(name, position) FROM Professor;

[그림7] Concat 기능 예제1

 

6. SUBSTR 함수

  • 문자열에서 특정 길이의 문자를 추출할 때 사용하는 함수
문법 : SUBSTR('문자열' 또는 칼럼명, 1, 4)
  • 앞의 숫자는 시작 위치, 뒤에 숫자는 추출할 글자수를 의미한다.

 

예제 

  1. Student 테이블에서 jumin 칼럼을 사용해서 1전공이 101번인 학생들의 이름과 생년월일을 출력하세요.
  2. Student 테이블에서 jumin 칼럼을 사용해서 태어난 달이 8월인 사람의 이름과 생년월일을 출력하세요.

 

SELECT name, SUBSTR(jumin, 1,6) as "생년월일" FROM Student WHERE deptno1  = 101;

[그림8] 예제1  생년월일

 

SELECT name, SUBSTR(jumin, 1, 6) as "생년월일" FROM Student WHERE SUBSTR(jumin,3,2) = '08';

[그림9] 예제2 태어난 달 8월

 

7. SUBSTRB 함수

  • SUBSTRB 함수와 문법은 SUBSTR과 동일하며 차이점은 추출할 자릿수가 아니라 추출할 바이트 수를 지정하는 것이다. 

 

8. INSTR 함수

  • 주어진 문자열이나 칼럼에서 특정 글자의 위치를 찾아주는 함수다.
문법 : INSTR('문자열' 또는 칼럼, 찾는 글자, 시작위치, 몇 번째인지(기본값은 1))

 

예제

  1. Student 테이블의 tel 칼럼을 사용해 학생의 이름과 전화번호. ')'가 나오는 위치를 출력하시오.
SELECT name, tel, INSTR(tel, ')', 1,1) FROM Student WHERE deptno1 = 101;

[그림10] Student 테이블tel 칼럼 이용 ')'위치 찾기 예제1

 

 

문자 함수 퀴즈1

  • Student 테이블 참조해 1전공이(deptno1 칼럼) 101번인 학생의 이름과 전화번호와 지역번호 출력
  • 지역번호는 숫자만 나와야 한다.
SELECT name, tel, SUBSTR(tel, 1,INSTR(tel, ')') -1) FROM student WHERE deptno1 =101;

[그림11] 문자 함수 퀴즈1

 

9. LPAD 함수

문법 : LPAD('문자열' 또는 칼럼명, 자릿수, '채울 문자')

 

SELECT id, LPAD(id, 10, '%') AS "LPAG" FROM STUDENT WHERE deptno1 = 101;

[그림12] LPAD 함수

문자 함수 퀴즈2

  • dept2 테이블 사용해 dname을 결과에 맞게 출력

 

SELECT LPAD(dname, 10, '1234567890') as "LPAD" FROM dept2;

[그림13] 문자 함수 퀴즈 2

 

10. RPAD 함수

문법 : RPAD('문자열' 또는 칼럼명, 자릿수, '채울문자')

 

예제

  1. Student 테이블에서 다음과 같이 id를 12자리로 출력하되 오른쪽 빈자리에는 '*'로 채우시오
SELECT RPAD(id, 12, '*') AS "RPAD" FROM Student WHERE deptno1 = 101;

[그림14] 예제1 

 

 

문자 함수 퀴즈3 

  • Dept2 테이블을 사용해 dname을 아래의 결과가 나오도록 쿼리를 작성하시오
SELECT RPAD(dname, 10, SUBSTR('1234567890', LENGTH(dname)+1)) as "RPAD 연습" from dept2;

[그림15] RPAD 문제

 

11. LTRIM 함수

  • LPAD, RPAD 함수가 채우는 함수라면 LTRIM, RTRIM 함수는 제거하는 함수
문법 : LTRIM('문자열' 또는 칼럼명 , '제거할 문자')

 

예제

  1. dept2 테이블에서 dname을 출력하되 왼쪽에 '영'이란 글자를 모두 제거하고 출력하시오.
SELECT LTRIM(dname, '영') from dept2;

[그림16] 예제1 dept2 테이블 dname 출력 '영' 제거

 

12. RTRIM 함수

문법 : RTRIM('문자열' 또는 칼럼명, '제거할 문자' ) 

 

예제

  1. Dept2 테이블에서 dname을 출력하되 오른쪽 끝에 '부'라는 글자는 제거하고 출력
SELECT RTRIM(dname, '부') from dept2;

[그림17] dept2 테이블 dname 출력

 

13. REPLACE 함수

  1. 첫 번째 문자열에서 문자1이 있으면 문자2로 바꾸어 출력하는 함수
문법 REPLACE('문자열' 또는 칼럼명, '문자1', '문자2')

 

 

예제

  1. Student 테이블에서 학생들의 이름을 출력하되 성 부분은 '#'으로 표시되게 출력하시오.
SELECT REPLACE(name, substr(name, 1, 1), '#') from student WHERE deptno1 = 101;

[그림18] 예제1 Student 테이블에서 학생들 #으로 표시

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기