来自String的SAP HANA转换的TO_DECIMAL

时间:2017-01-04 21:40:38

标签: sql sap arcgis hana

我正在使用SAP HANA数据库/表连接在ArcGIS for Desktop中添加查询图层。我想要使​​用的表将经度和纬度字段存储为字符串数据类型。我想为这一层写一个查询,将这些字段转换为十进制数据类型,以便我能够呈现XY数据。

我的字段值的示例是经度:-117.619193和纬度:33.453381

引发的错误是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 个答案:

答案 0 :(得分:2)

您似乎误解了TO_DECIMAL() function的参数。

TO_DECIMAL(LONGITUDE,3,6)

使用

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 

你要求的是3位数的精度和6位数的刻度。

我认为你的意图恰恰相反:

$(document).on('change', '.country', function () {
    if ($(this).val() == $(this).data('current-countryCode')) {
        $('#states').next(".select2-container").show();
    }
    else {
        $('#states').next(".select2-container").hide();
    }
});

答案 1 :(得分: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)woud表示目标小数类型,有8个位置,其中小数点后6位。

请注意,经度绝对值> = 1000且纬度> = 100的值将导致错误。如果你想在这里限制较少,并在应用程序层捕获错误的值,你可能想要使用更高的精度,例如to_decimal(LONGITUDE,12,6)。