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

SQL Server中等效Oracle TO_CHAR格式'FM099999999V99MI'的实现咨询

原Oracle格式逻辑拆解

你用到的TO_CHAR(Amount, 'FM099999999V99MI')逻辑如下:

  • FM:移除输出首尾空格
  • 099999999:整数部分固定9位,不足补前导零
  • V99:隐式将数值乘以100,把两位小数直接拼在整数部分后
  • MI:负数的负号放在输出末尾,正数不显示符号

SQL Server等效实现

方案1:FORMAT函数写法(适配SQL Server 2012及以上版本)

写法最简洁,完全匹配输出规则:

SELECT 
    Amount,
    CONCAT(
        FORMAT(ABS(ROUND(Amount * 100, 0)), '00000000000'),
        CASE WHEN Amount < 0 THEN '-' ELSE '' END
    ) AS Converted
FROM Billing_table

方案2:低版本兼容写法(适配SQL Server 2008及更早版本)

如果数据库不支持FORMAT函数,可以用传统字符串函数实现:

SELECT 
    Amount,
    CONCAT(
        RIGHT(REPLICATE('0', 11) + CAST(CAST(ABS(ROUND(Amount * 100, 0)) AS BIGINT) AS VARCHAR(11)), 11),
        CASE WHEN Amount < 0 THEN '-' ELSE '' END
    ) AS Converted
FROM Billing_table

两种写法都完全匹配你给出的示例输出规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:09:02