如何在Synapse中转换科学计数法?
如何在Azure Synapse Analytics中转换科学计数法

一、SQL池(专用/无服务器)场景
针对SQL池中的科学计数法数值(或字符串形式的科学计数法),可通过以下T-SQL方法转换:
- FORMAT函数:支持自定义格式,可将数值转为带千分位或指定小数位数的常规格式
注:-- 转换字符串型科学计数法为整数格式 SELECT FORMAT(TRY_CAST('1.2345e+05' AS FLOAT), 'N0') AS ConvertedValue; -- 保留两位小数格式 SELECT FORMAT(TRY_CAST('1.2345e+05' AS FLOAT), 'N2') AS ConvertedValue;TRY_CAST用于避免转换失败时抛出错误,若确定字段为合法数值类型,可直接使用CAST。 - STR函数:将数值转为指定长度和小数位数的字符串
参数说明:第一个参数为目标数值,第二个为总字符长度,第三个为小数位数。SELECT STR(CAST('1.2345e+05' AS FLOAT), 10, 0) AS ConvertedValue;
二、Spark池场景
在Synapse Spark池中,可通过PySpark函数处理:
- format_number函数:格式化数值为指定小数位数的字符串
from pyspark.sql.functions import format_number, col # 假设DataFrame含字段ScientificCol(科学计数法数值) df = df.withColumn("ConvertedValue", format_number(col("ScientificCol"), 0)) - 类型转换结合字符串格式化:先转成decimal类型再转字符串
df = df.withColumn("ConvertedValue", col("ScientificCol").cast("decimal(18,2)").cast("string")) - 处理字符串类型的科学计数法:先转成double类型再格式化
from pyspark.sql.functions import expr df = df.withColumn("ConvertedValue", expr("format_number(cast(ScientificCol as double), 2)"))
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

