我正在使用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位小数的精度?
答案 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)。