문법 |
목적 |
GREATEST함수는 하나 이상의 인수중에서 가장 큰 값을 반환한다. 오라클 데이터 베이스는
반환되는 타입을 정의 하기 위해 첫번째 expr을 이용한다. 만약 첫번째 expr이 수치형이라면, 오라클은 수치 순위가 가장 높은 인수를
정의하여, 비교 전에 나머지 인수를 그 데이터 형으로 암묵적으로 변환하고, 그 데이터형을 되돌린다. 만약 첫번째 expr이 수치형이 아니라면,
비교전에 첫번째 인수뒤의 expr을 암묵적으로 첫번째 expr로 변환한다.
오라클 데이터 베이스는 nonpadded 비교 규칙을 이용하여 각 expr을 비교한다. 문자 비교는
데이터 베이스 세트에서 문자의 값에 근간하여 비교한다. 만약 문자가 가장 높은 순위의 문자세트 값이라면, 다른 것보다 크다. 만약 함수에 의해
반환되는 값이 문자 데이터라면, 그것의 데이터형은 항상 VARCHAR2이다.
참고 : 문자 타입의 비교 법칙
- DATA TYPE, CHAR, VARCHAR2, CHARACTER,문자열 비교법칙
- ORACLE에서 문자열을 비교하기 위해 Blank-Padded Comparison Semantics과 Nonpadded Comparison
Semantics 이라는 방법을 사용한다.
여기에서 주의할 점은 Blank-Padded Comparison Semantics과 Nonpadded Comparison semantics의 결과가 항상
일치하는 것이 아니라는 점이다.
그러면 사례를 통해 두 비교방식에 대하여 알아보도록 하자.
|
Blank Padded Comparison |
Nonpadded Comparison |
|
'ab' > 'aa' |
'ab' > 'aa' |
|
'ab' > 'a ' |
'ab' > 'a ' |
|
'ab' > 'a' |
'ab' > 'a' |
|
'ab' = 'ab' |
'ab' = 'ab' |
|
'a ' = 'a' |
'a ' > 'a' |
위의 사례를 보면 비교되는 문자열이 Blank를 포함하고 있으면 padding과 non padding이 다른 결과를 나타내고 있다.
1.Blank-Padded Comparison Semantics
Oracle에서 이 비교방식을 사용하는 경우는 다음과 같다.
2.Nonpadded Comparison Semantics
Oracle에서 이 비교방식을 사용하는 경우는 다음과 같다.
예제 |
다음 문장은 가장 큰 값을 가지는 문자열을 선택한다.
SELECT GREATEST ('HARRY', 'HARRIOT', 'HAROLD')
"Greatest" FROM DUAL;
Greatest
--------
HARRY