Oracle - 문자형 함수

uglyduck.dev·2020년 9월 26일
0

따라해보기 🎭

목록 보기
7/12

CONCAT(char1, char2), ||(pipeline)

  • 문자열 연결

SELECT CONCAT('문자열1','문자열2') FROM 테이블;

SELECT CONCAT('Hello','bye'), CONCAT('good','bad') FROM DUAL;
CONCAT('HELLO','BYE')CONCAT('GOOD','BAD')
Hellobyegoodbad
SELECT CONCAT('good','bad') CONCATS, 'good' || 'bad' OPERATORS FROM DUAL;
CONCATSOPERATORS
goodbadgoodbad

INITCAP()

  • 첫 문자를 대문자로 변환
  • 단어와 단어간 공백 및 구분자 '/' 기준

SELECT INITCAP('문자열') FROM 테이블;

SELECT INITCAP('good morning') FROM DUAL;
INITCAP('GOODMORNING')
Good Morning
SELECT INITCAP('good/bad morning') FROM DUAL;
INITCAP('GOOD/BADMORNING')
Good/Bad Morning

LOWER(), UPPER()

  • 대소문자 변경

SELECT LOWER('문자열') FROM 테이블; <- 소문자 변환
SELECT UPPER('문자열') FROM 테이블; <- 대문자 변환

SELECT LOWER('GOOD'), UPPER('good') FROM DUAL;
LOWER('GOOD')UPPER('GOOD)
goodGOOD

LPAD(expr1, n [,expr2])

  • expr1을 n만큼 왼쪽으로 늘려서 반환

SELECT LPAD('문자열1', n, '문자열2') FROM 테이블;

SELECT LPAD('good', 6) FROM DUAL;
LPAD('GOOD', 6)
good
SELECT LPAD('good', 6) "LPAD1",
       LPAD('good', 6, '@') "LPAD2",
       LPAD('good', 8, 'L') "LPAD3"
FROM DUAL;
LPAD1LPAD2LPAD3
good@@goodLLLLgood

RPAD(expr1, n [,expr2])

  • expr1을 n만큼 오른쪽으로 늘려서 반환

SELECT RPAD('문자열1', n, '문자열2') FROM 테이블;

SELECT RPAD('good', 6) "RPAD1",
       RPAD('good', 6, '@') "RPAD2",
       RPAD**('good', 8, 'L') "RPAD3"
FROM DUAL;
RPAD1RPAD2RPAD3
goodgood@@goodLLLL

LTRIM(char[,set])

  • char에서 set으로 지정된 문자를왼쪽에서 제거

SELECT LTRIM('문자열','문자') FROM 테이블;

SELECT LTRIM('goodbye','g'), 
       LTRIM('goodbye','o'), 
       LTRIM('goodbye','go')
FROM DUAL;
LTRIM('GOODBYE','G')LTRIM('GOODBYE','O')LTRIM('GOODBYE','GO')
oodbyegoodbyedbye

RTRIM(char[,set])

  • char에서 set으로 지정된 문자를오른쪽에서 제거

SELECT RTRIM('문자열','문자') FROM 테이블;

SELECT RTRIM('goodbye','g') FROM DUAL;
RTRIM('GOODBYE','E')
goodby

SUBSTR()

  • 문자열 일부를 반환

SELECT SUBSTR('문자열', 인텍스) FROM 테이블

SELECT SUBSTR('good morning john', 8, 4) FROM DUAL;
SUBSTR('GOODMORNINGJOHN', 8, 4)
rnin
SELECT SUBSTR ('good morning john', 8) FROM DUAL;
SUBSTR('GOODMORINGJOHN', 8)
rning john
SELECT SUBSTR('good morning john', -4, 2) FROM DUAL;
SUBSTR('GOODMORNINGJOHN', -4, 2)
jo
SELECT SUBSTR ('good morning john', -4, 0) FROM DUAL;
SUBSTR('GOODMORNINGJOHN, -4, 0)
(null)

SUBSTRB()

  • 문자열 일부를 반환 (byte 수 만큼)

SELECT SUBSTRB('문자열', n Byte) FROM 테이블;

// SELECT SUBSTRB('good morning john', 8, 4) FROM DUAL;
SUBSTRB('GOODMORNINGJOHN', 8, 4 )
rnin

REPLACE()

  • 문자열 일부를 대체해서 반환

SELECT REPLACE('문자열', '원 문자열', '바꿀 문자열') FROM DUAL;

SELECT REPLACE('good morning tom', 'morning', 'evening') FROM DUAL;
REPLACE('GODMORNINGTOM','MORNING','EVENING')
good evening tom

TRANSLATE(expr, frm_str, to_str)

  • 문자 자체를 일대일로 대응, 변환
SELECT REPLACE('You are not alone', 'You', 'We'),
       TRANSLATE('You are not alone', 'You', 'We')
FROM DUAL;
REPLACE('YOUARENOTALONE','YOU','WE')TRANSLATE('YOUARENOTALONE','YOU','WE')
We are not aloneWe are net alene
  • replace, translate 차이
    replace: 'AbC', 'BbC' -> 'BbC'
    translate: 'AbC', 'BcD' -> 'Bc~D~' // 1:1 대응

TRIM([LEDING, TRAILING, BOTH] [, trim_chr][FROM] trim_src)

  • trim_src에서 trim_chr를 앞, 뒤 혹은 모두에서 제거한 결과 반환

LENGTH()

  • 문자열 길이 반환

SELECT TRIM([LEADING] [,'문자'] [FROM ]'문자열') FROM DUAL;

  • LEADING 왼쪽

SELECT TRIM([TRAILING] [,'문자'] [FROM]'문자열') FROM DUAL;

  • TRAILING 오른쪽

SELECT TRIM([BOTH\] [,'문자'\] [FROM]'문자열') FROM DUAL;

  • BOTH 양쪽
SELECT LENGTH(TRIM(LEADING FROM 'good')) FROM DUAL;
LENGTH(TRIM(LEADINGFROM('GOOD'))
4
SELECT LENGTH(TRIM(TRAILING FROM 'good')) FROM DUAL;
LENGTH(TRIM(TRAILINGFROM('GOOD'))
4
SELECT LENGTH(TRIM(BOTH FROM 'good')) FROM DUAL;
LENGTH(TRIM(BOTHFROM('GOOD'))
4
SELECT TRIM(TRAILING 'd' FROM 'good') FROM DUAL;
TRIM(TRAILING'D'FROM'GOOD')
goo

ASCII()

  • ASCII 코드 값 반환
SELECT ASCII('a') FROM DUAL;
ASCII('A')
65

INSTR(string, src_str, pos, occur)

  • 특정 문자열의 위치를 찾아 반환
SELECT INSTR('good morning john', 'or', 1) FROM DUAL;
INSTR('GOODMORNINGJOHN','OR',1)
7

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글