포스팅 목차
o GREATEST
문 법
greatest::=
목 적
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에서 이 비교방식을 사용하는 경우는 다음과 같다.
- 양쪽 모두가 CHAR 혹은 NCHAR 타입인 경우
- 양쪽 모두가 문자 타입의 상수일 경우
- 사용자 함수에서 반환된 값
2. Nonpadded Comparison Semantics
- 서로 다른 문자 값이 나타날 때까지 문자 단위로 비교를 수행한다.
- 서로 다른 값이 나타나면 문자 값이 큰 칼럼이 크다고 판단하고 비교를 종료한다. 만약 값이 같다면 길이가 짧은 칼럼만큼만 비교한 후 각 칼럼의 길이를 비교하여 길이가 긴 칼럼이 크다고 판단한다.
Oracle에서 이 비교방식을 사용하는 경우는 다음과 같다.
- 비교되는 값 중에 VARCHAR2 혹은 NVARCHAR2가 있을 경우
패키지 함수 비교 (Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table)
관련 함수
함수명 | 함수내용 |
GREATEST | 다수의 인수중에서 가장 큰 값을 반환한다. |
LEAST | 인수 EXPR의 리스트 중에서 가장 작은 값을 반환을 한다. |
예 제
다음 문장은 가장 큰 값을 가지는 문자열을 선택한다.
Oracle Program |
SELECT GREATEST ('HARRY', 'HARRIOT', 'HAROLD')"Greatest"
FROM DUAL;
Results |
Greatest
--------
HARRY
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
[오라클 함수] GROUPING 함수 (0) | 2018.11.20 |
---|---|
[오라클 함수] GROUP_ID 함수 (0) | 2018.11.20 |
【오라클(Oracle) SQL 함수】 FROM_TZ 함수 (0) | 2018.11.20 |
【오라클 SQL 함수】 FLOOR 함수 (0) | 2018.11.20 |
【오라클(Oracle) SQL 함수】 FIRST_VALUE 함수 (0) | 2018.11.20 |
댓글