728x90
오라클에서 문자열을 자를 때는 SUBSTR 함수를 사용한다.
문자열을 바이트 단위로 자를 때는 SUBSTRB 함수를 사용하면 된다.
SUBSTR
SUBSTR(문자열, 시작위치, 길이)
SELECT SUBSTR('Hello World', 2) FROM DUAL;
--문자열의 두 번째 위치("e")부터 문자열 끝까지 자른다.
SELECT SUBSTR('Hello World', 2, 3) FROM DUAL;
--문자열의 두 번째 위치("e")부터 세 자리("ell")까지 자른다.
SUBSTR 뒤에서 부터 문자열 자르기
SELECT SUBSTR('hello world', -3) FROM DUAL;
--문자열의 뒤에서 세 번째 위치("r")에서 문자열 끝까지 자른다.
SELECT SUBSTR('hello world', -3, 2) FROM DUAL;
--문자열의 뒤에서 세 번째 위치("r")에서 두 자리("rl")까지 자른다.
SUBSTRB
SUBSTRB(문자열, 시작위치, 길이)
SUBSTRB 함수는 바이트 단위로 문자열을 자를 때 사용한다.
한글 같은 경우 문자단위로 자를 때 깨지는 경우가 있다. 이럴 때는 바이트 단위로 자르는 깨지는 걸 방지할 수 있다.
오라클 세팅에 따라서 한글이 3byte 또는 2btye 일수 있으니 아래의 문자셋 쿼리로 오라클 세팅을 확인 후 사용하자.
SELECT *
FROM nls_database_parameters
WHERE parameter LIKE '%CHARACTERSET%'
한글을 지원하는 문자셋은 KO16KSC5601(2byte), KO16MSWIN949(2byte), UTF8(3byte), AL32UTF8(3byte)가 있다.
SELECT *
FROM nls_database_parameters
WHERE parameter LIKE '%CHARACTERSET%';
--AL32UTF8로 3바이트임을 확인
SELECT SUBSTRB('안녕하세요', 6) FROM DUAL; --하세요
SELECT SUBSTRB('안녕하세요', 1, 6) FROM DUAL; --안녕
참고 출처 : https://gent.tistory.com/201
728x90
'STUDY > DB SQL' 카테고리의 다른 글
[Oracle] SQL Developer 엑셀로 INSERT 하기 (0) | 2023.07.24 |
---|---|
[SQL] 오라클 여러행 삽입(INSERT) 방법 (0) | 2023.07.24 |
[SQL] 오라클 문자(CHR) 아스키코드(ASCII) 변환 방법 (0) | 2023.07.21 |
[SQL] 오라클 trim, replace로 제거되지 않은 공백값 chr(49824) 제거하기 (0) | 2023.07.21 |
[SQL] 오라클 DELETE,UPDATE후 COMMIT한 데이터 복구 방법 (0) | 2023.07.14 |