Google bigquery Bigquery-如何将浮点转换为不带向上/向下取整的字符串?
基本上我有一批GPS坐标lat和long,我想有一个格式为lat的字符串;长的我所做的是:Google bigquery Bigquery-如何将浮点转换为不带向上/向下取整的字符串?,google-bigquery,Google Bigquery,基本上我有一批GPS坐标lat和long,我想有一个格式为lat的字符串;长的我所做的是: CONCAT(CAST(Latitude AS STRING),";", CAST(Longitude AS STRING)) 但是遇到了一个问题,坐标是由CAST STRING进行四舍五入的,并且做了同样的事情。例如,通过选择CAST45.3618927作为字符串,我将得到45.3619。如何防止这种舍入 注意:我知道标准SQL中的SAFE_CAST可以满足我的需求,但由于其他原因,我不得不使用遗留方
CONCAT(CAST(Latitude AS STRING),";", CAST(Longitude AS STRING))
但是遇到了一个问题,坐标是由CAST STRING进行四舍五入的,并且做了同样的事情。例如,通过选择CAST45.3618927作为字符串,我将得到45.3619。如何防止这种舍入
注意:我知道标准SQL中的SAFE_CAST可以满足我的需求,但由于其他原因,我不得不使用遗留方言。legacySQL
选择CONCAT
RTRIMConcataleftlat温度,横向位置-1',次级温度,横向位置“0”,
';',
RTRIMCONCATLEFTlon温度,lon位置-1',SUBSTRlon温度,lon位置'0'
就像拉图隆一样
从…起
选择
INSTRSTRINGlat*1000000,'.-6作为横向位置,
替换StringLat*1000000,“.”,作为lat_temp,
INSTRSTRINGlon*1000000,'.-6作为lon_pos,
替换为lon_temp的stringlon*1000000'”
从…起
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
当然看起来很难看,但正如你所说的——出于某种原因,你想坚持使用遗留SQL
否则,请参见下面的标准SQL版本
标准SQL
以你的桌子为例
选择34.052235作为lat,选择-118.243683作为lon
选择CONCATCASTlat作为字符串,;,卡斯特隆和拉特隆一样是弦
从你的桌子上
遗留SQL的另一个不那么难看的版本是使用
legacySQL
选择lat、lon、lat_-lon
来自JS
-输入表
从中选择lat、lon
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
,
-输入变量
拉特,朗,
-输出模式
[
{name:'lat_lon',键入:'STRING'},
{name:'lat',type:'FLOAT'},
{name:'lon',type:'FLOAT'}
],
-功能
函数行,发射{
散发{
lat_lon:row.lat.toString.concat';'。concatrow.lon.toString,
lat:row.lat,
朗:罗,朗
}
}
最后,如果你碰巧决定迁移到,多亏了Elliott对此的评论,使用使生活更加轻松
标准SQL
选择格式“%t;”t',lat,lon作为lat_lon
从…起
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
legacySQL
选择CONCAT
RTRIMConcataleftlat温度,横向位置-1',次级温度,横向位置“0”,
';',
RTRIMCONCATLEFTlon温度,lon位置-1',SUBSTRlon温度,lon位置'0'
就像拉图隆一样
从…起
选择
INSTRSTRINGlat*1000000,'.-6作为横向位置,
替换StringLat*1000000,“.”,作为lat_temp,
INSTRSTRINGlon*1000000,'.-6作为lon_pos,
替换为lon_temp的stringlon*1000000'”
从…起
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
当然看起来很难看,但正如你所说的——出于某种原因,你想坚持使用遗留SQL
否则,请参见下面的标准SQL版本
标准SQL
以你的桌子为例
选择34.052235作为lat,选择-118.243683作为lon
选择CONCATCASTlat作为字符串,;,卡斯特隆和拉特隆一样是弦
从你的桌子上
遗留SQL的另一个不那么难看的版本是使用
legacySQL
选择lat、lon、lat_-lon
来自JS
-输入表
从中选择lat、lon
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
,
-输入变量
拉特,朗,
-输出模式
[
{name:'lat_lon',键入:'STRING'},
{name:'lat',type:'FLOAT'},
{name:'lon',type:'FLOAT'}
],
-功能
函数行,发射{
散发{
lat_lon:row.lat.toString.concat';'。concatrow.lon.toString,
lat:row.lat,
朗:罗,朗
}
}
最后,如果你碰巧决定迁移到,多亏了Elliott对此的评论,使用使生活更加轻松
标准SQL
选择格式“%t;”t',lat,lon作为lat_lon
从…起
选择34.052235作为lat,选择-118.243683作为lon作为您的表格
这个例子在标准SQL中工作得非常好!没有任何舍入。到底是什么让您一直使用遗留SQL?这个例子在标准SQL中非常有效!没有任何舍入。到底是什么让您保留了旧式SQL?另一个根本不需要强制转换的选项是使用格式。例如,选择格式“%t;”t',lat,lon作为你桌子上的lat_lon;OP需要旧版SQL。我特意使用了他自己的示例作为标准SQL的替代。如果要真正使用标准SQL,使用的格式要性感得多:o@MikhailBerlyant@@在阅读答案时,我觉得我几乎想更努力地学习标准方言。。。坚持使用legacy的原因是我不知道STRING_AGG是否能与ORDER BY一起工作。看看Mosha Pasumasky在哪里提供了答案。我现在就去试穿一下,以备不时之需。谢谢大家!当然我在对这个问题的评论中也回答了你的问题。我刚刚更新了我的答案。如果它有帮助-请考虑投票,并接受另一个选择,根本不需要铸造是使用格式。例如,选择格式“%t;”t',lat,lon作为你桌子上的lat_lon;OP需要旧版SQL。我特意使用了他自己的示例作为标准SQL的替代。如果真的去w
ith标准SQL使用格式更性感:o@MikhailBerlyant@@在阅读答案时,我觉得我几乎想更努力地学习标准方言。。。坚持使用legacy的原因是我不知道STRING_AGG是否能与ORDER BY一起工作。看看Mosha Pasumasky在哪里提供了答案。我现在就去试穿一下,以备不时之需。谢谢大家!当然我在对这个问题的评论中也回答了你的问题。我刚刚更新了我的答案。如果它有帮助-请考虑投票和接受