我想在我的 SP 末尾的同一个选择中使用 ISNULL 和 REPLACE。
SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',')
是我现在尝试的方式,它确实不起作用。如何将这两者结合在一个查询中?
干杯
我想在我的 SP 末尾的同一个选择中使用 ISNULL 和 REPLACE。
SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',')
是我现在尝试的方式,它确实不起作用。如何将这两者结合在一个查询中?
干杯
在下文中,首先将“执行” ISNULL,因此如果 COL01 具有 NULL 值,则将返回一个空字符串并传递给 REPLACE 函数,该函数将替换所有的 '.' 带有','。如果值为 NULL,则将返回一个空字符串。
REPLACE(ISNULL(COL01,''),'.',',')
由于您的替换值永远不会包含 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
.