728x90

레퍼런스 (오라클 12.2) :

docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/Functions.html#GUID-D079EFD3-C683-441F-977E-2C9503089982

 

SQL Language Reference

 

docs.oracle.com

 

concat (문자열 결합)

SQL> select concat('Hello', 'World')
  2  from dual;

CONCAT('HE
----------
HelloWorld

 

substr (문자열 자르기)

SQL> select substr('HelloWorld', 1, 5)
  2  from dual;

SUBST
-----
Hello

substr ('자를문자열', 시작인덱스(1부터시작), 자를 문자열 수)

 

시작인덱스는 문자열 끝부터 역순세기도 지원한다. (끝자리가 -1)

SQL> select substr('HelloWorld', -3, 3)
  2  from dual;

SUB
---
rld

자를 문자열 수는 왼쪽에서 오른쪽 방향으로만 지원한다. 따라서 아래와 같은 방법으론 원하는 결과(rld출력)가 나오지 않는다.

SQL> select substr('HelloWorld', -1, 3)
  2  from dual;

S
-
d
SQL> select substr('HelloWorld', -1, -3)
  2  from dual;

S
-

substr함수를 where절에 응용

SQL> select last_name, hire_date
  2  from employees
  3  where substr(hire_date, -2, 2) = '04';

LAST_NAME		  HIRE_DATE
------------------------- ---------
Weiss			  18-JUL-04
Mallin			  14-JUN-04
Russell 		  01-OCT-04
(...)

 

length (문자열 길이 구하기)

SQL> select length('helloworld') * 7 + 2
  2  from dual;

LENGTH('HELLOWORLD')*7+2
------------------------
		      72

helloworld의 길이는 10이므로 10 x 7 + 2의 연산이 이루어져 72가 출력된다.

 

instr (문자열 인덱스 찾기)

레퍼런스 : docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/INSTR.html#GUID-47E3A7C4-ED72-458D-A1FA-25A9AD3BE113

 

SQL Language Reference

 

docs.oracle.com

문법

{ INSTR
| INSTRB
| INSTRC
| INSTR2
| INSTR4
}
(string , substring [, position [, occurrence ] ])

|   = or
[   = option
(전체문자열, 찾고싶은 문자열 [, 해당인덱스부터 검색 [, 찾은 문자열 여러개면 n번째 나타나는 문자열인지 지정 ] ])

 

반환값은 찾은 인덱스 (정수)

 

예)

SQL> select instr('hello', 'l')
  2  from dual;

INSTR('HELLO','L')
------------------
		 3

예) substr과 결합해 응용

SQL> select substr('helloworld', instr('helloworld', 'h'), 4)
  2  from dual;

SUBS
----
hell

예)

SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring"
  2    FROM DUAL;

  Instring
----------
	14

위의 INSTR 함수의 3번째 인자는 "찾기 시작할 인덱스", 4번째 인자는 "두번째로 찾은 문자열"

 

max (최대 길이 구하기)

예) last_name컬럼 데이터의 최대길이 구하기

SQL> select max(length(last_name))
  2  from employees;

MAX(LENGTH(LAST_NAME))
----------------------
		    11

 

lpad, rpad

(길이가 n이 되도록 문자식으로 채운 표현식 반환.

lpad는 왼쪽부터, rpad는 오른쪽부터 채움)

예)

SQL> select lpad(salary, 10, '*') as lpad, rpad(salary, 10, '*') as rpad
  2  from employees;

LPAD		     RPAD
-------------------- --------------------
*****24000	     24000*****
*****17000	     17000*****
*****17000	     17000*****
(...)

암시적 형변환하여 숫자값을 문자값으로 변환하여 결과 출력

 

예) 왼쪽에 공백을 넣어 정렬 맞추기

SQL> select lpad(last_name, 11, ' ') || ' is babo. '
  2  from employees;

LPAD(LAST_NAME,11,'')||'ISBABO.'
------------------------------------------------------
       Abel is babo.
       Ande is babo.
   Atkinson is babo.
     Austin is babo.

 

replace (문자열 치환)

SQL> select replace('jack and jue', 'j', 'bl')
  2  from dual;

REPLACE('JACKA
--------------
black and blue

TRIM

  • 입력받은 문자열 양쪽 끝의 지정 문자 제거

SQL> SELECT TRIM(' ' FROM '     HelloWorld    ')
  2  FROM dual;
  
TRIM(''FRO
----------
HelloWorld

'     HelloWorld    '의 양끝에서 ' ' 가 제거된 모습

 

 

'DB' 카테고리의 다른 글

[오라클 DB] 일반 함수/그룹함수  (0) 2021.03.10
[오라클 DB] 함수-숫자  (0) 2021.03.10
[오라클 DB] DQL 심화학습  (0) 2021.02.19
[오라클 DB] 온라인에서 Oracle SQL 테스트하기  (0) 2021.02.19
[오라클 DB] DQL  (0) 2021.02.03

+ Recent posts