sql-server - 在 SQL Server 中将 NULL 或 0.00 替换为 00.00
问题描述
我有一个要求,如果列是 NULL 或 '',则将其替换为 '00.00'。列的数据类型为VARCHAR(11)
,我尝试了此处显示的 3 种方法。前两个对我不起作用,然后我尝试了CASE
,但它返回的结果为“0.00”。严格来说,我需要数据为 '00.00'
COALESCE(SALES_TAX_BASE, '00.00') AS SALES_TAX_BASE
和
ISNULL(SALES_TAX_BASE, '00.00') AS SALES_TAX_BASE
和
CASE
WHEN CAST(SALES_TAX_BASE AS VARCHAR(11)) = '' THEN '00.00'
WHEN CAST(SALES_TAX_BASE AS VARCHAR(11)) = NULL THEN '00.00'
WHEN CAST(SALES_TAX_BASE AS VARCHAR(11)) = '0.00' THEN '00.00'
WHEN CAST(SALES_TAX_BASE AS VARCHAR(11)) = '0' THEN '00.00'
ELSE SALES_TAX_BASE
END AS SALES_TAX_BASE
解决方案
case expression
您可以使用多个运算符尝试以下OR
操作,如下所示:
create table SampleTable (Id int, SALES_TAX_BASE Varchar(20))
insert into SampleTable Values
(1, 'NULL'),
(2, ' '),
(3, 'NULL'),
(4, '200.60'),
(5, '0'),
(6, '0.00'),
(7, NULL)
;with cte as (Select Id,
CASE
WHEN ISNULL(LTRIM(RTRIM(SALES_TAX_BASE)), '00.00') = '00.00'
OR
LTRIM(RTRIM(SALES_TAX_BASE)) = ''
OR
LTRIM(RTRIM(SALES_TAX_BASE)) = '0'
OR
LTRIM(RTRIM(SALES_TAX_BASE)) = 'NULL'
THEN '00.00'
ELSE
SALES_TAX_BASE
END AS SALES_TAX_BASE
From SampleTable
)
Select Id
, try_cast (SALES_TAX_BASE as numeric(18, 2)) as SALES_TAX_BASE
from cte
现场db<>fiddle演示。
推荐阅读
- ssl - MacOS Mojave 更新 SSL/TLS (?) 后无法从“https://rubygems.org/”安装 gems
- css - VS 捆绑发布时出现 CSS 缩小错误
- java - 在for循环SQLite android中迭代游标
- dictionary - Golang map的并发访问如何解决?
- email - Google Analytics - 电子邮件跟踪链接点击 - 如何在同一视图中查看所有自定义活动数据(“发送”、“打开”、“点击”)
- python - LSTM,多二进制数组输入和过拟合处理
- php - JQuery 特定问题 - PHP JSON 返回
- python - Python OpenCV VideoCapture read() 无法读取帧
- c - 在 Visual Studio 和 C 项目上运行之间的不一致
- data-mining - 数据挖掘,维度灾难