在同一个选择中使用replace和isnull

时间:2013-08-30 06:56:59

标签: sql sql-server sql-server-2008

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

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

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

干杯

2 个答案:

答案 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