如果值为0.000000,则将十进制值转换为NULL

agh*_*aux 1 sql-server

我想在null-able列中将小数值0.000000和NULL都处理为NULL

例如:

case worthColumn
WHEN '0.000000' then NULL
WHEN NULL then NULL
ELSE worthColumn
END 
AS SumOfWorth
Run Code Online (Sandbox Code Playgroud)

但值0.000000总是在结果中结束?

Lam*_*mak 8

如果它是小数,那么您不需要将它与字符串进行比较.用途NULLIF:

NULLIF(worthColumn,0)

如果您使用以下示例:

CREATE TABLE YourTable(A DECIMAL(20,3));

INSERT INTO YourTable
VALUES (10),(1),(NULL),(0.000),(20);

SELECT *, NULLIF(A,0)
FROM YourTable
Run Code Online (Sandbox Code Playgroud)

然后你得到以下结果:

?????????????????????????????
?   A    ? (No column name) ?
?????????????????????????????
? 10.000 ? 10.000           ?
? 1.000  ? 1.000            ?
? NULL   ? NULL             ?
? 0.000  ? NULL             ?
? 20.000 ? 20.000           ?
?????????????????????????????
Run Code Online (Sandbox Code Playgroud)

(现在不能发布一个sqlfiddle,因为它暂时失效)