변환 함수 및 조건부 표현식

Oracle/OracleDB_SQL 2016. 5. 18. 04:54

데이터 유형 변환

- 암시적 데이터 유형 변환

- 명시적 데이터 유형 변환


[변환 함수]

어떠한 경우엔 Oracle서버가 특정 데이터 유형의 데이터를 사용하는 위치에 다른 데이터 유형의 데이터가 전달되기도 한다. 

이러한 경우에 오라클 서버가 데이터를 예상 데이터 유형으로 자동으로 변환할 수 있다.

Oracle 서버에 의해서 암시적으로 수행되거나 유저에 의해서 명시적으로 수행될 수 있다.


명시적 데이터 유형 변환은 변환 함수를 통하여 수행된다.


** 암시적 데이터 유형 변환을 사용할 수 있지만 명시적 변환을 권장한다.


[암시적 데이터 유형 변환]

1. Oracle 서버는 표현식에서  자동으로 변환할 수 있다.


VARCHAR2 or CHAR  ->  NUMBER

VARCHAR2 or CHAR  ->  DATE


2. 표현식 평가 시에 Oracle 서버는 자동으로 변환할 수 있다.

NUMBER -> VARCHAR2 or CHAR

DATE      -> VARCHAR2 or CHAR


** 

문자열이 유효한 숫자를 나타내는 경우만 CHAR를 NUMBER으로 변환할 수 있다.


[명시적 데이터 유형 변환]


1. 날짜에 TO_CHAR 함수 사용하기

원형 : TO_CHAR( date, 'format_model' )

- 작은 따옴표 ' ' 로 묶어야 한다.

- 대소문자 구분한다.

- 임의의 유효한 날짜 형식 요소를 포함할 수 있다.

- fm 요소를 갖는다. ( 공백 제거 )

- 쉼표를 사용해서 날짜 값과 구분한다.


날짜 형식 모델 요소

 요소

 결과 

 YYYY

 숫자로 도니 전체 연도 (2016)

 YEAR

 영어 철자로 표기된 연도  

 MM

 월의 2자리 값

 MDNTH

 전체 월 이름 

 MDN 

 월의 3자 약어 

 DY 

 3문자로 된 요일 약어

 DAY 

 요일의 전체 이름

 DD 

 숫자 형식의 월간 일


2. 숫자에 TO_CHAR 함수 사용

원형 TO_CHAR( number, 'format_model' )

 요소 

 결과 

 9

 숫자를 나타낸다. 

 0

 0이 표시되도록 강제 적용

 $

 부동 달러 기호 배치 

 L

 부동 로컬 통화 기호 사용 

 . (마침표)

 소수점 출력

 , (쉼표)

 천단위 표시자로 쉼표 출력


** 

AMERICAN_AMERIA 

KOREAN_KOREA

( 나중에 경로적어서 다시 정리)


3. TO_NUMBER, TO_DATE

원형 : TO_NUMBER( char[ , 'format_model ' ] )

- 문자열을 숫자로


원형 : TO_DATE(char[, 'format_model' ] )

- 문자열을 숫자로



[함수 중첩]

- 단일 행 함수는 어떠한 레벨로도 중첩될 수 있다.

- 중첩된 함수는 가장 깊은 레벨에서 가장 낮은 레벨로 평가된다.


F3 (F2 (F1 (col ,arg1) ,arg2) ,arg3)


F1 --- arg1 가장 깊은 레벨

F2 --- arg2

F3 --- arg3


[일반 함수]


NVL( expr1, expr2 )

- NULL을 실제 값을 변환한다.


NVL2( expr1, expr2, expr3 )

- expr1이 null이 아닌 경우 expr2를 반환한다.

- expr1이 null이면 expr3을 반환한다.

- expr1은 임의의 데이터 유형을 가지게 된다.


NULLIF( expr1, expr2 )

- 두 표현식을 비교해서 같으면 null을반환한다. 

- 같지 않으면 첫번째 표현식을 반환


COALESCE ( expr1, expr2, ...., exprn )

- 리스트에서 null이 아닌 표현식을 반환한다.

- 모든 표현식은 동일한 데이터 유형이여야 한다.


[조건식 표현식]


CASE식

- 프로시저 호출하지 않고 IF-THEN-ELSE 논리 사용할 수 있다.


CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

v WHEN comparison_expr3 THEN return_expr3

 ELSE else_expr]

END

( 데이터 유형이 동일해야 한다. )


- DECODE 함수 사용


DECODE( col /expression, search1, result1

[, search2, result2,....,]

[, default] )


expression이 search값에 비교한후 값이 맞으면 result가 반환된다.

default값이 생략된 경우 일치하는 result값이 없으면   null 반환한다.





















'Oracle > OracleDB_SQL' 카테고리의 다른 글

단일 행 함수  (0) 2016.05.21
데이터 제한 및 정렬  (0) 2016.05.21
[조건식,그룹 함수]  (0) 2016.05.18
SQL 함수  (0) 2016.05.16
윈도우에서 오라클 경로 찾기  (0) 2016.05.12
admin