2017-01-04 2 views
1

SAP HANA DB/테이블 연결을 사용하여 데스크톱 용 ArcGIS에서 쿼리 계층을 추가하고 있습니다. 사용하고자하는 테이블에는 경도 및 위도 필드가 문자열 데이터 유형으로 저장되어 있습니다. 이 필드를 10 진수 데이터 형식으로 변환하는이 레이어에 대한 쿼리를 작성하여 XY 데이터를 표시 할 수있게하고 싶습니다.SAP HANA 용 TO_DECIMAL 문자열 변환

내 필드 값의 예는 경도입니다 -117.619193와 위도 : 33.453381

throw되는 오류가 General error; 319 decimal scale specifier is out of range: 6:(0-3)::S1000

검색어 :
select "JOBID", TO_DECIMAL(LONGITUDE,3,6) AS "LONG_DEC", TO_DECIMAL(LATTITUDE,3,6) AS "LAT_DEC" from "_SYS_BIC"."SEU.GD.LM/CA_KT_TICKETSTATUS"

나는 3 진수 식별자를 변경하는 경우 내 정밀도가 정확하지 않을 것이다. 소수점 이하 6 자리의 정밀도를 유지하려면 어떻게 변경해야합니까?

답변

2

TO_DECIMAL() function의 매개 변수를 잘못 이해 한 것 같습니다. 당신이 3 자리의 정밀도와 6 자리의 규모를 요구하고

TO_DECIMAL(LONGITUDE,3,6) 

TO_DECIMAL (<value> [, <precision>, <scale>]) 

. 위도/경도의 일반적인 의미를 고려

select 
     TO_DECIMAL(-117.619193 , 6, 3) AS "LONG_DEC" 
     , TO_DECIMAL(33.453381 , 6, 3) AS "LAT_DEC" 
from dummy; 

LONG_DEC LAT_DEC 
-117.619 33.453 
0

, -180 및 180/-90과 90 사이의 값을되고, 당신은 유지하려는 고려 :

나는 무엇을 의도하는 것은 반대 설정했다 가정 (소수점) 6 소수점의 정밀도, 난 당신이 다음과 같은 성명이 필요 같아요

select "JOBID", 
    TO_DECIMAL(LONGITUDE,9,6) AS "LONG_DEC", 
    TO_DECIMAL (LATTITUDE,8,6) AS "LAT_DEC" 
from "_SYS_BIC"."SEU.GD.LM/CA_KT_TICKETSTATUS 

TO_DECIMAL을 (LATTITUDE, 8,6)는 무엇에 6 소수점 이하 8 개 장소와 대상 진수 형식을 의미 woud 포인트.

경도 값이 절대 값 = 1000 이상이고 위도 값이 100 이상인 값은 오류가 발생합니다. 덜 제한적으로 여기에서 응용 프로그램 계층에서 잘못된 값을 잡아 내고 싶다면 더 높은 정밀도를 사용하는 것이 좋습니다. to_decimal (LONGITUDE, 12,6).

관련 문제