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

Decimal(18)字段转Text字段并去除.00后缀的SQL语法问题

Decimal转Text并去除.00后缀的正确SQL实现

针对Decimal字段转Text并去掉.00后缀的需求,以下是不同数据库环境下的可行方案,同时说明原语句报错的可能原因:

原语句报错原因

不同数据库对TRUNCATE函数的定义不同:

  • 若使用SQL Server,TRUNCATE是用于截断表数据的DDL语句,并非数值截断函数,这会直接导致语法校验失败;
  • 部分数据库对别名的引号使用有要求(比如单引号仅用于字符串字面量,别名应使用双引号或无引号)。

分数据库解决方案

SQL Server

由于字段值均为X.00格式,可直接将Decimal转为整数后再转字符串:

SELECT CONVERT(VARCHAR(15), CAST(a.CADS_ID_Number__c AS INT)) AS CADS_ID_Number__c

或使用STR函数(注意去除默认前导空格):

SELECT LTRIM(STR(a.CADS_ID_Number__c, 15, 0)) AS CADS_ID_Number__c

MySQL

利用TRUNCATE(MySQL中该函数用于数值截断)或直接转整数类型:

-- 截断小数后转字符串
SELECT CAST(TRUNCATE(a.CADS_ID_Number__c, 0) AS CHAR) AS CADS_ID_Number__c
-- 更简洁的方式:直接转无符号整数
SELECT CAST(a.CADS_ID_Number__c AS UNSIGNED) AS CADS_ID_Number__c

Oracle

使用TO_CHAR指定格式或结合TRUNC函数:

-- 直接格式化去除小数部分
SELECT TO_CHAR(a.CADS_ID_Number__c, 'FM999999999999999') AS CADS_ID_Number__c
-- 或截断后转字符串
SELECT TO_CHAR(TRUNC(a.CADS_ID_Number__c), 'FM999999999999999') AS CADS_ID_Number__c

注:FM修饰符用于去除格式化后的多余空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:42:47