728x90
레퍼런스 (오라클 12.2) :
concat (문자열 결합)
SQL> select concat('Hello', 'World')
2 from dual;
CONCAT('HE
----------
HelloWorld
substr (문자열 자르기)
SQL> select substr('HelloWorld', 1, 5)
2 from dual;
SUBST
-----
Hello
substr ('자를문자열', 시작인덱스(1부터시작), 자를 문자열 수)
시작인덱스는 문자열 끝부터 역순세기도 지원한다. (끝자리가 -1)
SQL> select substr('HelloWorld', -3, 3)
2 from dual;
SUB
---
rld
자를 문자열 수는 왼쪽에서 오른쪽 방향으로만 지원한다. 따라서 아래와 같은 방법으론 원하는 결과(rld출력)가 나오지 않는다.
SQL> select substr('HelloWorld', -1, 3)
2 from dual;
S
-
d
SQL> select substr('HelloWorld', -1, -3)
2 from dual;
S
-
substr함수를 where절에 응용
SQL> select last_name, hire_date
2 from employees
3 where substr(hire_date, -2, 2) = '04';
LAST_NAME HIRE_DATE
------------------------- ---------
Weiss 18-JUL-04
Mallin 14-JUN-04
Russell 01-OCT-04
(...)
length (문자열 길이 구하기)
SQL> select length('helloworld') * 7 + 2
2 from dual;
LENGTH('HELLOWORLD')*7+2
------------------------
72
helloworld의 길이는 10이므로 10 x 7 + 2의 연산이 이루어져 72가 출력된다.
instr (문자열 인덱스 찾기)
문법
{ INSTR
| INSTRB
| INSTRC
| INSTR2
| INSTR4
}
(string , substring [, position [, occurrence ] ])
| = or
[ = option
(전체문자열, 찾고싶은 문자열 [, 해당인덱스부터 검색 [, 찾은 문자열 여러개면 n번째 나타나는 문자열인지 지정 ] ])
반환값은 찾은 인덱스 (정수)
예)
SQL> select instr('hello', 'l')
2 from dual;
INSTR('HELLO','L')
------------------
3
예) substr과 결합해 응용
SQL> select substr('helloworld', instr('helloworld', 'h'), 4)
2 from dual;
SUBS
----
hell
예)
SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring"
2 FROM DUAL;
Instring
----------
14
위의 INSTR 함수의 3번째 인자는 "찾기 시작할 인덱스", 4번째 인자는 "두번째로 찾은 문자열"
max (최대 길이 구하기)
예) last_name컬럼 데이터의 최대길이 구하기
SQL> select max(length(last_name))
2 from employees;
MAX(LENGTH(LAST_NAME))
----------------------
11
lpad, rpad
(길이가 n이 되도록 문자식으로 채운 표현식 반환.
lpad는 왼쪽부터, rpad는 오른쪽부터 채움)
예)
SQL> select lpad(salary, 10, '*') as lpad, rpad(salary, 10, '*') as rpad
2 from employees;
LPAD RPAD
-------------------- --------------------
*****24000 24000*****
*****17000 17000*****
*****17000 17000*****
(...)
암시적 형변환하여 숫자값을 문자값으로 변환하여 결과 출력
예) 왼쪽에 공백을 넣어 정렬 맞추기
SQL> select lpad(last_name, 11, ' ') || ' is babo. '
2 from employees;
LPAD(LAST_NAME,11,'')||'ISBABO.'
------------------------------------------------------
Abel is babo.
Ande is babo.
Atkinson is babo.
Austin is babo.
replace (문자열 치환)
SQL> select replace('jack and jue', 'j', 'bl')
2 from dual;
REPLACE('JACKA
--------------
black and blue
TRIM
-
입력받은 문자열 양쪽 끝의 지정 문자 제거
SQL> SELECT TRIM(' ' FROM ' HelloWorld ')
2 FROM dual;
TRIM(''FRO
----------
HelloWorld
' HelloWorld '의 양끝에서 ' ' 가 제거된 모습
'DB' 카테고리의 다른 글
[오라클 DB] 일반 함수/그룹함수 (0) | 2021.03.10 |
---|---|
[오라클 DB] 함수-숫자 (0) | 2021.03.10 |
[오라클 DB] DQL 심화학습 (0) | 2021.02.19 |
[오라클 DB] 온라인에서 Oracle SQL 테스트하기 (0) | 2021.02.19 |
[오라클 DB] DQL (0) | 2021.02.03 |