[ORACLE] 오라클 SQL 문자형 함수
[ORACLE] 오라클 SQL 문자형 함수
문자형 함수
함수의 종류
단일행 함수
_ 한 번에 한 건씩 처리하는 함수
복수행 함수
_ 그룹 함수 혹은 집계 함수
단일행 함수
1) 문자 함수
2) 숫자 함수
3) 날짜 함수
4) 변환 함수 (묵시적 데이터 변환, 명시적 데이터 변환)
5) 일반 함수
문자형 함수의 종류와 사용법
그럼 문자형 함수를 실제로 사용해보자!
문자형 함수 연습
1. trim
select length(trim(' 아메리카노')) from dual;
2. ||
select 'a' || 'bcde' from dual;
3. concat : CONCAT( 컬럼, 컬럼)
=> 두 개의 문자열을 결합
select concat('my name is' , ' inchul') from dual;
4. CHR >> 아스키코드값 얻기(숫자)
ASCII >> CHR값 얻기(문자)
>> 각 제일 앞에 있는 한 글자에서만 값을 가져온다.
select CHR(13) "CHR", ASCII('') "ASCII" from dual; --연습해보기 select CHR(ASCII(coffee_name)) from ic_coffee order by 1;
5. LOWER : 해당 문자나 문자열을 소문자로
UPPER : 대문자로 반환
INITCAP : 첫 글자를 대문자로, 카멜케이스형태이다.
SELECT LOWER('DATA minipulation Language') "LOWER", UPPER('DATA minipulation Language') "UPPER", INITCAP('DATA minipulation Language') "INITCAP" FROM DUAl;
6. LPAD & RPAD : 지정된 길이 n에서 c1을 채우고 남은 공간을 c2로 채워서 반환
SELECT LPAD ('c1', length, ['c2'])
=> c2 공간을 채우지 않아도 괜찮다.
보이지 않을 뿐 공백으로 매워진다.
길이를 재보면 알 수 있다.
SELECT length(LPAD ('Java', 10)) "LPAD_1_length", LPAD ('Java', 10) "LPAD_1", LPAD ('Java', 10, '*') "LPAD", RPAD ('Java', 12, '>') FROM DUAL;
7. LTRIM : LTRIM( 컬럼, [기본값:공백] || [문자열])
RTRIM : TRIM( 컬럼, [기본값:공백] || [문자열])
=> 좌우측의 공백문자 혹은 지정된 문자열과 일치하는 문자 제거
SELECT '<' || LTRIM (' AAA ') || '>' AS "LTRIM1", '<' || LTRIM ('HELLO WORLD HE', 'HE') || '>' AS "LTRIM2" FROM DUAL;
8. SUBSTR : SUBSTR( 컬럼 , 자리위치 , 글자수)
-- 문자열_연습문제 1. 'SQL PROJECT'에서 'SQL' 만 추출해내시오. SELECT SUBSTR('SQL PROJECT' , 1, 3) "이거뽑아라" FROM DUAL; -- 문자열_연습문제 2. 회원테이블에서 회원의 이름에서 성씨 만 추출해내시오. SELECT SUBSTR(MEM_NAME, 1, 1) FROM IC_MEMBER; -- 문자열_연습문제 3. 회원테이블에서 회원의 이름에서 성씨가 김씨인 사람만 추출해내시오. SELECT MEM_NAME FROM IC_MEMBER WHERE SUBSTR(MEM_NAME,1,1) = '김' ; SELECT MEM_NA FROM IC_MEMBER WHERE MEM_NAME LIKE '김%';
문자열_연습문제 4. 회원테이블의 회원아이디에서 숫자를 제거하여 출력하시오.
SELECT MEM_NAME, MEM_ID , TRANSLATE(MEM_ID, 'abcdefghijklmnopqrstuvwxyz'||MEM_ID, 'abcdefghijklmnopqrstuvwxyz'), LENGTH(TRANSLATE(MEM_ID, '0123456789', ' ')) FROM IC_MEMBER; -- 공백까지 완벽제거 SELECT REPLACE(TRANSLATE('012a123', '0123456789', ' '), ' ','') FROM dual;
문자열_연습문제 5. 회원테이블의 회원성명 중 '이' -> '리' 로 치환검색
SELECT mem_name, REPLACE(mem_name, '이', '리') FROM IC_MEMBER WHERE mem_name LIKE '이%';
11. INSTR : INSTR( 컬럼 , 지정문자 , 시작자릿수)
문자열_연습문제 6. 회원테이블의 메일에서 '@' 가 시작되는 위치를 알아내시오.
SELECT INSTR(MEM_MAIL, '@', 5) FROM IC_MEMBER; SELECT INSTR('와우왕우우우우앙', '우', 3, 1) FROM DUAL;
12. LENGTH : LENGTH(컬럼)
=> 크기를 리턴 -- 한글은 3바이트다!
SELECT LENGTH('SQL 프로젝트') "길이", LENGTHB('SQL 프로젝트') "크기" FROM DUAL;