Or03String

/*******

# 파일명 : Or03String.sql

# 문자열 처리 함수

# 설명 : 문자열에 대해 대소문자를 변환하거나 문자열의 길이를 반환하는 등

문자열을 조작하는 함수

*******/


/*

    concat(char1, char2)

    : 문자열1, 문자열2를 서로 연결해서 출력하는 함수

    사용법 1 : concat('문자열1, '문자열2')

    사용법2 : '문자열1' || '문자열2'

*/


select concat('God','morning') AS "아침인사" from dual;

select 'Oracle' || 'Holic' operators from dual;

--employees 테이블에서 'XXX의 이메일은 WWW입니다.'

select concat(concat(concat(first_name,'의'), '이메일은 '),email)|| ' 입니다.'

from employees

where employee_id =100;


/*

    initcap(char)

    : 문자열의 첫문자만 대문자로 변환하는 함수.

    단, 첫문자를 인식하는 기준은 공백과 알파벳(숫자포함)을 제외한 문자이다.

    즉, 공백이나 알파벳이 아닌 문자를 만난 후 다음 첫 알파벳을 대문자로 변환한다.

*/


select initcap('hi hello 안녕') from dual; -- HI Hello 안녕

select Initcap('good/bad moning') from dual; -- Good/Bad morning

select concat(initcap('good'), initcap('bad morning')) from dual;


- goodBad Muning


select Initcap("naver6say가bye")from dual; --Never6say*Good가Bye 

/*

    lower(char) : 문자열을 소문자로 반환함.

    uper(char) : 문자열을 대소문자로 반환함.

*/

select loWer('GOOD') AS "소문자로", upper('bad') AS "대문자로" from dual;


/*

    LPAD(), RPAD()

    : 문자명의 항목, 오른쪽을 특정한 기호로 채울때 사용하는 함수

    사용법 : LPAD('문자열' '전체자리수', '채울문자열')

    전체자리수에서 문자열의 길이만큼은 제외한 나머지 좌측부분을 주어진

    문자열로 채워주는 함수. RPAD()는 우측부분을 채워줌.

*/


select 

    'good' "STR",

    lpad('good', 6) "LPAD1",

    lpad('good', 7, '#') "LPAD2",

    lpad ('good', 8, 'L') "LPAD3" 

from dual; -- __good, ##good, LLLLgood


select

    rpad('KOSMO', 7) "RPAD1",

    rpad('KOSMO', 8, '0') "RPAD2",

    rpad('KOSMO', 9, '5') "RPAD3"

from dual; --KOSMO__, KOSMO000, KOSMOSSSSS


/*

    TRIM()

    : 공백을 제거할 때 사용하는 함수

    사용법 : TRIM(leding | traling | both) 제거할문자 [from] 칼럼)

    - leading : 왼쪽에서 제거함.

    - traling : 오른쪽에서 제거함.

    - both : 양쪽에서 제거함. 설정값이 없으면 both가 디폴트값이다.

    [주의1] 양쪽끝의 문자만 제거되고 중간에 있는 문자는 제거되지 않는다.

    [주의2] 문자만 제거할 수 ㅇㅆ고, 문자열은 제거할 수 없다. 에러발생함.

*/


select

    trim('테스트입니다.') as trim1,

    trim('다' from '다는 테스트입니다.') as trim2,

    trim(both '다' from '다는 테스트입니다.') as trim3,

    trim(leading '다' from '다는 테스트입니다.') as trim4,

    trim(both '다' from '다는 다라는 테스트입니다.')as trim5

from dual;


/*

    아래 문장은 쿼리에러 발생됨. trim에서는 하나의 문자만 제거할 수 있음

    즉, '한'은 제거되나 '한국'은 제거할 수 없음.

*/


select trim('한국' from '한국소프트웨어인재개발원') as trimError

from dual;


/*

    LTRIM() , RTRIM() -> L[eft]TRIM, R[light]TRIM

    :좌측 , 우측 문자, 문자열을 제거할 때 사용함.

    사용법 : LTRIM(컬럼명, '제거할문자or문자열')

    [참고] LTRIM, RTRIM은 문자열도 제거할 수 있다.

*/


select

    ltrim(' 테스트입니다. ')  as LTRIM,

    ltrim('테스트입니다', '테스트') as LTRIM2,

    ltrim('테스트입니다', '스트') as LTRIM3

from dual; --좌측의 공백 or 문자(열) 제거됨. 중간은 제거되지 않음.


select

    rtrim('테스트입니다') as RTRIM1,

    rtrim('테스트입니다', '니다') as RTRIM2,

    rtrim('테스트입ㄴ디ㅏ.', '입니') as RTRIM3,

    rtrim('테스트입니다.', '다') as RTRIM4

from dual; -- 우측의 공백 제거됨. 상동.


/*

    substr() : 문자열에서 시작인덱스부터 길이만큼 잘라서

    문자열을 출력함.

    substrb() : substr()과 동일한 기능이나 바이트 단위로 문자를 잘라서 출력함.

    사용법 : substr(칼럼, 시작인덱스, 길이)

    참고1] 인덱스는 1붙처 시작됨을 유의하자.

    참고2] '길이'에 해당하는 인자가 없으면 문자열의 끝까지 출력함.

    참고3] 시작인덱스가 음수값이면 우측끝부터 인덱스를 적용함.

*/


select substr('good morning john', 8, 4) from dual; --rnin

select substr('good morning john', 8) from dual; -- rning john


select substr('good morning john', -4) from dual; -- john

select substrb('good morning john', -4) from dual;


select substr('안녕하세요', 2) from dual; -- 인덱스2부터 시작 -> 녕하세요

select substrb('안녕하세요', 6) from dual; --6BYTE부터 잘라냄 -> 하세요



/*

    replace() : 문자열을 다른 문자열로 변경함.

    사용법 : replace (칼럼명, '변경할 대상의 문자' , '변경후 문자'

*/


select replace('good morning tom', 'morning', 'evening') from dual; -evening로 대체됨.

select replace('good morning tom', 'morning', '') from dual; -morning 삭제됨.


/*

    ascii() : 해당문자의 아스키코드값을 변환한다.

*/

select ascii('A') from dual;


/*

    instr()

        : 해당 문자열에서 특정문자가 위치한 인덱스값을 반환한다.

        사용법1 : instr(칼럼명, '찾을문자')

        사용법2 : instr(칼럼명, '찾을문자', 탐색을 시작할 인덱스, 몇번째문자)

*/

-- 아래 문자열에서 n이 나오는 첫번째 인덱스 반환

select instr('good morning john', 'n') from dual; -- 9 반환


-- 아래 문자열에서 n이 나오는 두 번째 인덱스 반환

select instr('good morning john', 'n',1,2) from dual; -- 11 반환


--아래 문자열에서 10번째 인덱스부터 탐색을 시작하여 n이 나오는 2번째 인덱스반환

select instr('good morning john', 'n',10,2) from dual; -- 17 반환




























'프로그래밍 > Oracle' 카테고리의 다른 글

Or05Date  (0) 2017.11.15
Or04TypeConvert  (0) 2017.11.15
Or02Number  (0) 2017.11.15
ExSchool01  (0) 2017.11.15
Or14View  (0) 2017.11.14
TAGS.

Comments