변환 함수 및 조건부 표현식
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 |