단일 행 함수
***************************************************************************************
SQL> select ename from emp;
ENAME
--------------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
MILLER
12 개의 행이 선택되었습니다.
LOWER( ) 함수 : 모든 문자를 소문자로 표현!
***************************************************************************************
SQL> select lower(ename) from emp;
LOWER(ENAME)
--------------------
smith
allen
ward
jones
martin
blake
clark
king
turner
james
ford
miller
12 개의 행이 선택되었습니다.
sysdate 함수 : 날짜나타내기
***************************************************************************************
SQL> select sysdate from emp;
SYSDATE
--------
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
09/07/30
12 개의 행이 선택되었습니다.
SQL> select sysdate from dual;
SYSDATE
--------
09/07/30
initcap( ) 함수 : 첫글자만 대문자로 나타내기
**********************************************************************************************
SQL> select initcap('the soap') from dual;
INITCAP('THESOAP
----------------
The Soap
SQL> select initcap(job) from emp;
INITCAP(JOB)
------------------
Clerk
Salesman
Salesman
Manager
Salesman
Manager
Manager
President
Salesman
Clerk
Analyst
Clerk
12 개의 행이 선택되었습니다.
concat( ) 함수 : 두개 문자 결합
**********************************************************************************************
SQL> select concat('직업은 ', job) from emp;
CONCAT('직업은',JOB)
--------------------------------------
직업은 CLERK
직업은 SALESMAN
직업은 SALESMAN
직업은 MANAGER
직업은 SALESMAN
직업은 MANAGER
직업은 MANAGER
직업은 PRESIDENT
직업은 SALESMAN
직업은 CLERK
직업은 ANALYST
직업은 CLERK
12 개의 행이 선택되었습니다.
문1>
SQL> select concat(concat(concat(ename, '의 연봉은 '), sal*12), '이다.') from emp;
CONCAT(CONCAT(CONCAT(ENAME,'의연봉은'),SAL*12),'이다.')
--------------------------------------------------------------------------------------
SMITH의 연봉은 9600이다.
ALLEN의 연봉은 19200이다.
WARD의 연봉은 15000이다.
JONES의 연봉은 35700이다.
MARTIN의 연봉은 15000이다.
BLAKE의 연봉은 34200이다.
CLARK의 연봉은 29400이다.
KING의 연봉은 60000이다.
TURNER의 연봉은 18000이다.
JAMES의 연봉은 11400이다.
FORD의 연봉은 36000이다.
MILLER의 연봉은 15600이다.
12 개의 행이 선택되었습니다.
LPAD( ) 함수 : 정의된 문장의 왼쪽 나머지 공간을 지정한 문자로 채운다.
**********************************************************************************************
SQL> select lpad('Page 1', 15, '*') from dual;
LPAD('PAGE1',15,'*')
------------------------------
*********Page 1
SQL> select lpad(ename, 15, '-') from emp;
LPAD(ENAME,15,'-')
----------------------------------------------------
----------SMITH
----------ALLEN
-----------WARD
----------JONES
---------MARTIN
----------BLAKE
----------CLARK
-----------KING
---------TURNER
----------JAMES
-----------FORD
---------MILLER
12 개의 행이 선택되었습니다.
SQL> select lpad(ename, 15, ' ') from emp;
LPAD(ENAME,15,'')
----------------------------------------------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
MILLER
12 개의 행이 선택되었습니다.
SQL> select rpad(ename, 11, 'x') from emp;
RPAD(ENAME,11,'X')
----------------------------------------------
SMITHxxxxxx
ALLENxxxxxx
WARDxxxxxxx
JONESxxxxxx
MARTINxxxxx
BLAKExxxxxx
CLARKxxxxxx
KINGxxxxxxx
TURNERxxxxx
JAMESxxxxxx
FORDxxxxxxx
MILLERxxxxx
12 개의 행이 선택되었습니다.
LTRIM( ) 함수 : 문자 제거 함수 왼쪽부터, 오른쪽 부터
**********************************************************************************************
SQL> select ltrim(ename,'A') from emp;
LTRIM(ENAME,'A')
--------------------
SMITH
LLEN
WARD
JONES
MARTIN
BLAKE
CLARK
KING
TURNER
JAMES
FORD
MILLER
12 개의 행이 선택되었습니다.
SQL> select rtrim(job,'N') from emp;
RTRIM(JOB,'N')
------------------
CLERK
SALESMA
SALESMA
MANAGER
SALESMA
MANAGER
MANAGER
PRESIDENT
SALESMA
CLERK
ANALYST
CLERK
12 개의 행이 선택되었습니다.
바꾸기 원하는 문자 바꾸기
**********************************************************************************************
SQL> select replace(ename, 'A', '111') from emp;
REPLACE(ENAME,'A','111')
------------------------------------------------------------
SMITH
111LLEN
W111RD
JONES
M111RTIN
BL111KE
CL111RK
KING
TURNER
J111MES
FORD
MILLER
12 개의 행이 선택되었습니다.
지정된 위치부터 해당 길이 만큼만 추출하기
**********************************************************************************************
SQL> select substr(job, 1, 2) from emp;
SUBSTR(JOB,1,2)
----------------
CL
SA
SA
MA
SA
MA
MA
PR
SA
CL
AN
CL
12 개의 행이 선택되었습니다.
//뒤에서 부터는 -1부터 -1씩 왼쪽으로 계산
SQL> select substr(job, -2, 2) from emp;
SUBSTR(JOB,-2,2)
----------------
RK
AN
AN
ER
AN
ER
ER
NT
AN
RK
ST
RK
12 개의 행이 선택되었습니다.
NVL( ) 함수
**********************************************************************************************
SQL> select comm+1000 from emp;
COMM+1000
----------
1300
1500
2400
1000
12 개의 행이 선택되었습니다.
SQL> select (nvl(comm,0)+1000) from emp;
(NVL(COMM,0)+1000)
------------------
1000
1300
1500
1000
2400
1000
1000
1000
1000
1000
1000
1000
12 개의 행이 선택되었습니다.
[연습문제]
**********************************************************************************************
SQL> select ascii('Q') from dual;
ASCII('Q')
----------
81
SQL> select instr('corporate floor', 'or') from dual;
INSTR('CORPORATEFLOOR','OR')
----------------------------
2
SQL> select length('가나다라마바사') from dual;
LENGTH('가나다라마바사')
------------------------
7
SQL> select user from dual;
USER
------------------------------------------------------------
SCOTT
**********************************************************************************************
문1>
SQL> select empno, ename, lower(job),deptno from emp
2 where ename='SMITH';
EMPNO ENAME LOWER(JOB) DEPTNO
---------- -------------------- ------------------ ----------
7369 SMITH clerk 20
문2>
SQL> select deptno,initcap(dname),initcap(loc) from dept;
DEPTNO INITCAP(DNAME) INITCAP(LOC)
---------- ---------------------------- --------------------------
10 Accounting New York
20 Research Dallas
30 Sales Chicago
40 Operations Boston
문3>
SQL> select empno, ename, job, sal, deptno from emp
2 where substr(ename,1,1)>'K' and substr(ename,1,1)<'Y'
3 order by ename desc;
EMPNO ENAME JOB SAL DEPTNO
---------- -------------------- ------------------ ---------- ----------
7521 WARD SALESMAN 1250 30
7844 TURNER SALESMAN 1500 30
7369 SMITH CLERK 800 20
7934 MILLER CLERK 1300 10
7654 MARTIN SALESMAN 1250 30
문4>
SQL> select empno, ename, length(ename), sal, length(sal) from emp
2 where deptno=20;
EMPNO ENAME LENGTH(ENAME) SAL LENGTH(SAL)
---------- -------------------- ------------- ---------- -----------
7369 SMITH 5 800 3
7566 JONES 5 2975 4
7902 FORD 4 3000 4
문5>
SQL> select ename, instr(ename, 'L') from emp;
ENAME INSTR(ENAME,'L')
-------------------- ----------------
SMITH 0
ALLEN 2
WARD 0
JONES 0
MARTIN 0
BLAKE 2
CLARK 2
KING 0
TURNER 0
JAMES 0
FORD 0
MILLER 3
12 개의 행이 선택되었습니다.
문6>
SQL> select ename, job, ltrim(job,'C'), sal, ltrim(sal, 1) from emp
2 where deptno=10;
ENAME JOB LTRIM(JOB,'C') SAL LTRIM(SAL,1)
---------------------------------------------------------------------------------------------------------------
CLARK MANAGER MANAGER 2450 2450
KING PRESIDENT PRESIDENT 5000 5000
MILLER CLERK LERK 1300 300
문7>
SQL> select ename, job, rtrim(job, 'T'), sal, substr(sal, 1, length(sal)-1) from emp
2 where deptno=10;
ENAME JOB RTRIM(JOB,'T') SAL SUBSTR(SAL,1,LENGTH(SAL)-1)
-------------------- ------------------ ------------------ ---------- -------------------------------------------------
CLARK MANAGER MANAGER 2450 245
KING PRESIDENT PRESIDEN 5000 500
MILLER CLERK CLERK 1300 130
문8>
SQL> select ename, job, replace(job, 'A', '$') from emp;
ENAME JOB REPLACE(JOB,'A','$
-------------------- ------------------ ------------------
SMITH CLERK CLERK
ALLEN SALESMAN S$LESM$N
WARD SALESMAN S$LESM$N
JONES MANAGER M$N$GER
MARTIN SALESMAN S$LESM$N
BLAKE MANAGER M$N$GER
CLARK MANAGER M$N$GER
KING PRESIDENT PRESIDENT
TURNER SALESMAN S$LESM$N
JAMES CLERK CLERK
FORD ANALYST $N$LYST
MILLER CLERK CLERK
12 개의 행이 선택되었습니다.
문9>
SQL> select substr(ename,instr(ename,'E')+1) from emp;
SUBSTR(ENAME,INSTR(ENAME,'E')+1)
----------------------------------
SMITH
N
WARD
S
MARTIN
CLARK
KING
R
S
FORD
R
12 개의 행이 선택되었습니다.
SQL> select substr(job,instr(job,'E')+1,length(job)) from emp;
SUBSTR(JOB,INSTR(JOB,'E')+1,LENGTH(JOB))
-------------------------------------------------------------------
RK
SMAN
SMAN
R
SMAN
R
R
SIDENT
SMAN
RK
ANALYST
RK
12 개의 행이 선택되었습니다.
**********************************************************************************************
lower('ABC')
upper('abcDE')
LPAD('abc', 10, '*')
Ltrim(
'DB(SQL)' 카테고리의 다른 글
[SQL] 제약조건 연습 (0) | 2017.02.28 |
---|---|
[SQL] 함수 연습2 (0) | 2017.02.28 |
[SQL] SQL 연습2 (0) | 2017.02.28 |
[SQL] SQL 연습1 (0) | 2017.02.28 |
[SQL] 권한 관리 (0) | 2017.02.28 |