我想在我的SP结尾的同一个选择中使用ISNULL和REPLACE。
SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',')
我现在尝试的方式,它确实不起作用。如何在一个查询中组合这两个?
干杯
答案 0 :(得分:3)
在下面,首先将“执行”ISNULL,因此如果COL01具有NULL值,则返回一个空字符串并传递给REPLACE函数,该函数将替换所有'。'。用','。如果值为NULL,则返回空字符串。
REPLACE(ISNULL(COL01,''),'.',',')
答案 1 :(得分:2)
由于您的替换值永远不会包含.
,因此您可以使用REPLACE
(或COALESCE
1 <包裹ISNULL
/ SUP>):
SELECT row, COALESCE(REPLACE(COL01,'.',','),'')
任何NULL
参数的 REPLACE
只会返回NULL
,您不需要做任何事情来保护它。
1 COALESCE
通常是首选,因为a)它的标准SQL,b)它推广到两个以上的参数,c)它尊重普通的类型优先规则。另一方面,ISNULL
是非标准的,只能用两个参数调用,并且(如果它使用第二个参数)强制将第二个参数转换为与第一个参数相同的类型。
我建议使用ISNULL
而不是COALESCE
的唯一地方是,当您在表格或视图中创建计算列时,第二个参数是&#39 ;重新传递非NULL,并且您希望元数据中列的定义为not null
。