나사야! 생각보다는 PostgreSQL 은 엄격한 type casting 을 요구한다. MySQL 과는 많이 다르지. 그리고 그게 옳다고 생각한다. 나도 언젠가 유사한 문제로 다음과 query 로 시스템의 연산자 함수를 모두 뽑아서 본적이 있었다.
select oprname, oprleft,oprright,oprresult,oprcode from pg_operator;
>>신현호 님께서 쓰시길<<
:: 김일형 님과 김상기 님의 조언으로 몇가지는 해결되었습니다.
::
:: 1. 정수 대 정수 연산에서 소수점 밑의 버림
:: 나누셈의 경우가 되겠는데... 나름대로 이해가
:: 갑니다.
:: 2. 3번째 문제와 같이 시험하면서 이상하게 꼬인
:: 거였습니다. 제 실수입니다.(죄송)
:: 3. 나머지 연산자인 %의 계산 불균형(?)
:: 밑의 명령치고서 실수 대 실수 연산에서 정수가
:: 나오는 것이 아님을 알았습니다만...
:: coral=# select 10.0 / (10.0 % 3.0);
:: ERROR: Unable to identify an operator '/' for types 'float8' and 'numeric'
:: You will have to retype this query using an explicit cast
::
:: 라는군요. 해서... 상기님의 말씀대로
::
:: create table a as select (10.0 % 3.0);
:: 라고 했더니만...
::
:: coral=# \d a
:: Table "a"
:: Attribute | Type | Modifier
:: ///////////+/////////+//////////
:: ?column? | numeric |
::
:: 라고 하더군요.
::
:: // 결국은 나머지 연산자인 %가 말썽이었습니다.
::
:: 혼란스럽게한점 죄송스럽게 생각합니다...(꾸벅)
::
:: 인천의 나사 풀린 산호...
|