0

我想在我的 SP 末尾的同一个选择中使用 ISNULL 和 REPLACE。

SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',')

是我现在尝试的方式,它确实不起作用。如何将这两者结合在一个查询中?

干杯

4

2 回答 2

3

在下文中,首先将“执行” ISNULL,因此如果 COL01 具有 NULL 值,则将返回一个空字符串并传递给 REPLACE 函数,该函数将替换所有的 '.' 带有','。如果值为 NULL,则将返回一个空字符串。

REPLACE(ISNULL(COL01,''),'.',',')
于 2013-08-30T06:58:36.237 回答
2

由于您的替换值永远不会包含 a .,因此您可以只REPLACE用 a ISNULL(或1)包装:COALESCE

SELECT row, COALESCE(REPLACE(COL01,'.',','),'')

REPLACE任何参数NULL都会返回NULL,你不需要做任何事情来保护它。


1 COALESCE通常是首选,因为 a) 它是标准 SQL,b) 它泛化到两个以上的参数,以及 c) 它尊重正常的类型优先级规则。ISNULL另一方面是非标准的,只能用两个参数调用,并且(如果它使用第二个参数)强制将第二个参数转换为与第一个参数相同的类型。

我建议使用ISNULL而不是唯一的地方COALESCE是当您在表或视图中创建计算列时,您传递的第二个参数是非 NULL,并且您希望元数据中的列定义为not null.

于 2013-08-30T07:12:02.177 回答