SQL 함수
(단일행 함수, 복수행 함수 2가지가 있다.)
단일행 함수의 종류
대소문자 변환함수(문자함수)
종류 |
의미 |
사용예 |
INITCAP |
문자열의 첫 번째 문자만 대문자로 변환 |
INITCAP(student) -> Student |
LOWER |
문자열 전체를 소문자로 변환 |
LOWER(ABC) -> abc |
UPPER |
문자열 전체를 대문자로 변환 |
UPPER(abc) -> ABC |
1 select lower(userid) as "User ID" 2 from student 3* where studno=20101 SQL> /
User ID ---------- dals |
1 select upper(userid) as "User ID" 2 from student 3* where studno=20101 SQL> /
User ID ---------- DALS |
실습문제 : 학생 테이블에서 ‘김영균’ 학생의 이름, 사용자 아이디를 출력하되 사용자아이디는 첫글자가 대문자로 변환하여 출력하여라.
SQL> select initcap(userid), name
2 from student
3 where name='김영균';
INITCAP(US NAME
---------- ----------
Mandu 김영균
종류 |
의미 |
사용예 |
LENGTH |
문자열의 길이를 반환 |
LENGTH('홍동') --> 2 |
LENGTHB |
문자열의 바이트를 반환 |
LENGTHB('홍동') --> 4 |
종류 |
의미 |
사용예 |
설명 |
CONCAT |
두 문자열을 결합. ||와 동일 |
CONCAT('SQL','PLUS') --> SQLPLUS |
|
SUBSTR |
특정문자 또는 문자열 일부를 추출 |
SUBSTR('SQL*PLUS',5,4) --> PLUS |
,5,4) --> 왼쪽에서 5번째 자리부터 4글자 뽑아라는 의미 ,-4,4) --> 오른쪽에서 4번째 앞에서부터 4글자 뽑아라는 의미 , SUBSTRB는 바이트단위로 |
INSTR |
특정 문자가 출현하는 위치를 반환 |
INSTR('SQL*PLUS','*',1,1) --> 4
INSTR('SQL*P*L*US,'*',1,2) --> 6 |
,1,1) 에서 앞의 1은 시작 위치, 뒤의 1은 원하는 글자 위치(원하는 글자가 여러 개 있을 경우, 첫번째냐 두번째냐 세번째냐 지정) |
LPAD |
지정한 수만큼 채우는 것(왼쪽에 지정한 문자를 채움) |
LPAD('SQL',5,'*') --> **SQL |
지정한 문자가 왼쪽에 채워짐 |
RPAD |
지정한 수만큼 채우는 것(오른쪽에 지정한 문자를 채움) |
RPAD('SQL',5,'*') --> SQL** |
지정한 문자가 오른쪽에 채워짐 |
LTRIM |
왼쪽의 지정문자를 삭제 |
LTRIM('*SQL','*') --> SQL |
|
RTRIM |
오른쪽의 지정문자를 삭제 |
RTRIM('SQL*','*') --> SQL |
|
CONCAT 예제 | SUBSTR 예제 + INSTR예제 |
INSTR(예제) |
1 select concat(name,position) 2* from professor SQL> /
CONCAT(NAME,POSITION) ------------------------------ 김도훈교수 이재우조교수 성연희조교수 염일웅전임강사 권혁일교수 이만식부교수 전은지전임강사 남은혁부교수
8 rows selected. |
학생테이블의 전화번호칼럼에서 지역번호와 이름을 출력하라. (02)도 있고 051)도 있어서 단순substr로는 불가능)
1 select substr(tel,1, instr(tel,')',1,1)-1) "지역번호", name 2* from student SQL> /
지역번호 NAME -------------------------- ---------- 051 전인하 055 이동훈 055 박미경 051 김영균
052 김진경 02 조명훈 055 류민정 16 rows selected |
학생테이블에서 userid 에서 2번째 a의 위치가 5번째인 학생의 name, userid 를 출력하세요.
SQL> select name, userid 2 from student 3 where instr(userid,'a',1,2)=5;
NAME USERID ---------- ---------- 윤진욱 Samba7 |
학생테이블의 전화번호칼럼에서 지역번호와 이름을 출력하라.
1 select rtrim(substr(tel,1,3),')') "지역번호", name2* from studentSQL> /
; SUBSTR에 의해서 XXX, 02)가 뽑혀져 나오게 되고 그 중 02)의 경우는 ')'가 RTRIM에 의해서 지워지게 되므로남는것은 지역번호 (다른 국번은 ')'가 없기때문에 RTRIM이 적용되어도 변화없음)
지역번 NAME------ ----------051 전인하055 이동훈055 박미경051 김영균051 박동진055 김진영055 지은경051 오유석
02 조명훈055 류민정
16 rows selected.
'Oracle > SQL' 카테고리의 다른 글
2012.01.03 SQL 2일차(2) 일반함수(nvl,nvl2,decode,case) (0) | 2012.01.09 |
---|---|
2012.01.03 SQL 2일차(1) 문자함수(LPAD,RPAD,REPLACE), 숫자함수, 날짜함수, 변환함수 (0) | 2012.01.09 |
2012.01.02 SQL 1일차(3) 연습노트( RTRIM의 미묘한 삭제, SUBSTR연습 ) (0) | 2012.01.09 |
SQL Plus 명령어 (0) | 2012.01.09 |
2012.01.02 SQL 1일차(1) (literal,연결연산자,where,between,in,like,null,집합연산자,정렬) (0) | 2012.01.09 |