You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks中T-SQL字符串列数值格式化问题求助

解决Databricks中字符串列格式转换问题

需求回顾

处理字符串类型列tl_deal_deal_cur_cal,转换规则:

  • 负数取绝对值
  • 移除小数点,最后两位固定代表原小数部分(不足两位补0,如15.4需转为1540)
  • 字符串前补0至15位

正确的Spark SQL实现

由于Databricks使用Spark SQL而非T-SQL,需适配Spark的函数特性,以下是修正后的语句:

SELECT
  lpad(
    cast(
      round(abs(cast(tl_deal_deal_cur_cal AS double)) * 100, 0) AS string
    ),
    15,
    '0'
  ) AS formatted_col
FROM your_table;

代码解释

  1. 绝对值转换:abs(cast(tl_deal_deal_cur_cal AS double)) 将字符串转为数值后取绝对值,处理负数场景
  2. 小数位标准化:乘以100后用round(...,0)确保小数部分补0到两位(如15.4→1540,7.23→723,0→0),若需截断而非四舍五入,可替换round为floor
  3. 补0到15位:lpad(...,15,'0') 将处理后的数值转为字符串,左侧补0至总长度15位

测试案例验证

原始值转换后结果
0000000000000000
15000000000001500
7.23000000000000723
15.4000000000001540
-9.5000000000000950

内容的提问来源于stack exchange,提问作者Galopito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:32:12