문자 함수
함수명 | 의미 | 사용 예 | 결과 |
INITCAP | 입력 값의 첫 글자만 대문자로 변환 | INITCAP('abcd') | Abcd |
LOWER | 입력 값을 전부 소문자로 변환 | LOWER('ABCD') | abcd |
UPPER | 입력 값을 전부 대문자로 변환 | UPPER('abcd') | ABCD |
LENGTH | 입력된 문자열의 길이 값을 출력 | LENGTH('한글') SELECT LENGTH('한글') FROM DUAL; |
2 |
LENGTHB | 입력된 문자열의 길이의 바이트 값을 출력 | LENGTHB('한글') SELECT LENGTHB('한글') FROM DUAL; |
6 (한글은 1글자 당 3 바이트) |
CONCAT | 두 문자열을 결합해서 출력. || 연산자와 동일 | CONCAT('A','B') | AB |
SUBSTR | 주어진 문자에서 특정 문자만 추출 | SUBSTR('ABC',1,2) | AB (첫 인덱스 : 1) |
SUBSTRB | 주어진 문자에서 특정 바이트만 추출 | SELECT SUBSTRB('한글',1,3) FROM DUAL; | 한 (한글은 1글자 당 3 바이트) |
INSTR | 주어진 문자에서 특정 문자의 위치 추출 | INSTR('A*B#','#') | 4 |
INSTRB | 주어진 문자에서 특정 문자의 위치 바이트값 추출 | SELECT INSTRB('한글로','로') FROM DUAL; | 7 한: 1-3 바이트 글: 4-6 바이트 로: 7-9 바이트 |
LPAD | 주어진 문자열에서 왼쪽으로 특정 문자를 채움 | LPAD('love',6,'*') | **love |
RPAD | 주어진 문자열에서 오른쪽으로 특정 문자를 채움 | RPAD('love',6,'*') | love** |
TRIM | 앞/뒤/양쪽에 있는 특정 문자를 제거 LEADING : 앞 TRAILING : 뒤 |
SELECT TRIM('---TECH---') FROM DUAL | TECH |
LTRIM | 주어진 문자열에서 왼쪽의 특정문자를 삭제함 | LTRIM('*love*','*') | love* |
RTRIM | 주어진 문자열에서 오른쪽의 특정문자를 삭제함 | RTRIM('*love*','*') | *love |
REPLACE | 주어진 문자열에서 A를 B로 치환함 | REPLACE('love','l','L') | Love |
TRANSLATE | 주어진 문자열에서 A 단어들을 B 단어들로 변환 | SELECT ENAME, TRANSLATE(ENAME, 'SMI', '*?!') FROM EMP |
S - * M- ? I - ! |
REGEXP_REPLACE | 주어진 문자열에서 특정 패턴을 찾아 치환함 | - | - |
REGEXP_INSTR | 주어진 문자열에서 특정 패턴의 시작위치를 반환 | - | - |
REGEXP_SUBSTR | 주어진 문자열에서 특정 패턴을 찾아 반환 | - | - |
REGEXP_LIKE | 주어진 문자열에서 특정 패턴을 찾아 반환 | - | - |
REGEXP_COUNT | 주어진 문자열에서 특정 패턴의 횟수를 반환 | - | - |
1. INITCAP(문자열 또는 칼럼명)
- 첫 글자만 대문자로 출력하고 나머지는 모두 소문자로 출력 (중간에 공백이 있을 경우 그 다음 글자는 대문자로 바꿈)
2. LOWER (문자열 또는 칼럼명) : 전부 소문자로 변경하여 출력
3. UPPER ( 문자열 또는 칼럼명) : 전부 대문자로 변경하여 출력
4. LENGTH ( 문자열 또는 칼럼명) : 입력된 문자열의 길이를 문자 수로 계산
5. LENGTHB ( 문자열 또는 칼럼명) : 입력된 문자열의 길이를 바이트 수로 계산 (한글을 저장할 경우 1글자당 3 바이트)
6. SUBSTR (문자열 또는 칼럼명, n번째 자리부터, x개의 문자)
7. SUBSTRB ( 문자열 또는 칼럼명, n번째 자리부터 , x바이트) : 특정 길이의 문자를 골라낼 때
8. INSTR (문자열 또는 칼럼명, 찾는 글자, n번째 자리부터, x번째)
: 특정 글자의 위치를 찾아줌
9. LPAD (문자열 또는 칼럼명, 자리수, 채울 문자)
: 데이터를 오른쪽에 두고, 왼쪽에 빈자리가 있을 경우 특정기호나 문자로 채움
10. RPAD (문자열 또는 칼럼명, 자리수, 채울 문자)
: 데이터를 왼쪽에 두고, 오른쪽에 빈자리가 있을 경우 특정기호나 문자로 채움
11. TRIM - 앞/뒤/양쪽에 있는 특정 문자를 제거
12. LTRIM (문자열 또는 칼럼명, 제거할 문자)
13. RTRIM (문자열 또는 칼럼명, 제거할 문자)
14. REPLACE (문자열 또는 칼럼명, '문자1을', '문자2로')
: 문자1을 문자2로 변환
15. TRANSLATE
- LENGTH 함수
1. 테이블 생성하기
SQL> create table test(
2 namec char(20), // 20칸짜리 문자 데이터
3 namev varchar2(20) // 가변길이
);
Table created.
2. 값 입력하기
SQL> insert into test values ('ENCORE','ENCORE');
1 row created.
SQL> insert into test values('엔코아','엔코아');
3. 문자열 길이(length) 출력
SQL> select length(namec), length(namev) from test;
LENGTH(NAMEC) LENGTH(NAMEV)
------------- -------------
20 6 --> ENCORE, ENCORE
14 3 --> 엔코아, 엔코아
=====================================================
1글자 = 3BYTE 엔코아*3 = 9BYTE = 데이터 길이
칼럼사이즈(20) - 데이터길이(9) = 11 BYTE (여유공간)
데이터 글자 수(3) + 여유 공간 글자(11) = 14 BYTE
SQL> insert into test values('빅데이터','빅데이터');
1 row created.
SQL> select length(namec), length(namev) from test;
LENGTH(NAMEC) LENGTH(NAMEV)
------------- -------------
20 6
14 3
12 4
- LTRIM 함수
SELECT LTRIM(' 65475251344141313TECH', '1234567890 ') FROM DUAL;
LTRIM('6
--------
TECH
'학습 과정 공유 및 후기 > SQLD' 카테고리의 다른 글
[ SQLD ] Oracle SQL (6) - 서브쿼리 (0) | 2020.05.21 |
---|---|
[ SQLD ] Oracle SQL (5) - 형변환 함수 (0) | 2020.05.20 |
[ SQLD ] Oracle SQL (4) - 숫자함수, 날짜 함수 (0) | 2020.05.20 |
[ SQLD ] Oracle SQL (2) - 집계 함수 [count, max, min, sum, avg] (0) | 2020.05.19 |
[ SQLD ] Oracle SQL (1) - SELECT문 (0) | 2020.05.19 |