728x90
반응형
오라클에서 SUBSTR 함수는 문자열을 자를 때 사용하는 기본 함수이다.
문자 단위로 자를때는자를 때는 SUBSTR 함수를 사용하고, 바이트 단위로 자를 때는 SUBSTRB 함수를 사용하면 된다.
SUBSTR(char, m ,[n]), SUBSTRB(char, m ,[n]) |
SUBSTR 함수는 m 번째 자리부터 길이가 n개인 문자열을 반환 한다.
m이 음수일 경우에는 뒤에서 m 번째 문자부터 n개의 문자를 반환한다.
SUBSTRB 함수에서 B는 Byte단위로 처리하겠다는 의미이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-- 세번째 이후 문자열 반환.
SELECT SUBSTR('oracleclub', 3) name FROM DUAL;
NAME
--------
acleclub
-- 세번째 이후 네개의 문자열 반환.
SELECT SUBSTR('oracleclub', 3, 4) name FROM DUAL;
NAME
----
acle
-- 뒤에서 세번째아후 두개의 문자열 반환.
SELECT SUBSTR('oracleclub', -3, 2) name FROM DUAL;
NA
--
lu
|
cs |
SUBSTR 함수 (문자 단위)
SUBSTR 함수는 문자 단위로 시작 위치와 자를 길이를 지정하여 문자열을 자른다.
SUBSTR("문자열", "시작위치", "길이") |
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 앞에서부터 문자열을 자르는 방법
WITH EMP AS (
SELECT '7566' EMPNO, 'JONES' ENAME, '매니저' JOB FROM DUAL
)
SELECT ENAME
, SUBSTR(ENAME, 2)
, SUBSTR(ENAME, 2, 3)
, JOB
, SUBSTR(JOB, 2, 1)
FROM EMP
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 뒤에서부터 문열을 자르는 방법]
WITH EMP AS (
SELECT '7566' EMPNO, 'JONES' ENAME, '매니저' JOB FROM DUAL
)
SELECT ENAME
, SUBSTR(ENAME, -3)
, SUBSTR(ENAME, -3, 2)
, JOB
, SUBSTR(JOB, -3, 1)
FROM EMP
|
cs |
SUBSTRB 함수 (바이트 단위)
SUBSTRB 함수는 바이트 단위로 문자열을 자를 때 사용한다.
한글 같은 경우 문자 단위로 자를 때 깨지는 경우가 있다.
이럴 때는 바이트 단위로 자르는 깨지는 걸 방지할 수 있다.
오라클 세팅에 따라서 한글이 3byte 또는 2 btye 일수 있으니 아래의 문자셋 쿼리로 오라클 세팅을 확인 후 사용하자.
SUBSTRB("문자열", "시작위치", "길이") |
1
2
3
4
|
-- 오라클 문자셋 확인 쿼리
SELECT *
FROM nls_database_parameters
WHERE parameter LIKE '%CHARACTERSET%'
|
cs |
1
2
3
4
5
6
7
8
|
SELECT
SUBSTRB('ABCDEFG', 1, 4), SUBSTRB('가나다라마바사', 1, 4)
FROM DUAL;
SUBSTRB('ABCDEFG',1,4) SUBSTRB('가나다라마바사',1,4)
--------------------------- ---------------------------------
ABCD 가나
|
cs |
728x90
반응형
'개발자였던 것 > 데이터베이스' 카테고리의 다른 글
[Oracle] REPLACE (0) | 2020.12.02 |
---|---|
[Oracle] LPAD와 RPAD (0) | 2020.12.02 |
[Oracle] CASE와 DECODE문 (0) | 2020.12.02 |
신입 기술 면접 예상 질문 & 코딩 테스트 (0) | 2020.11.17 |
SQL developer ORA-01045 오류 (0) | 2020.09.06 |