Sql 在同一选择中使用replace和isnull
我想在SP末尾的同一选择中使用ISNULL和REPLACESql 在同一选择中使用replace和isnull,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想在SP末尾的同一选择中使用ISNULL和REPLACE SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',') 就像我现在试的那样,它真的不起作用。如何在一个查询中组合这两个查询 Cheers在下面的示例中,首先将“执行”ISNULL,因此如果COL01具有NULL值,则将返回一个空字符串并传递给REPLACE函数,该函数将用一个“,”替换所有的“.”。如果该值为NULL,将返回一个空字符串 REPLACE(ISNULL(COL01,''),
SELECT row, ISNULL(COL01,''),REPLACE(COL01,'.',',')
就像我现在试的那样,它真的不起作用。如何在一个查询中组合这两个查询
Cheers在下面的示例中,首先将“执行”ISNULL,因此如果COL01具有NULL值,则将返回一个空字符串并传递给REPLACE函数,该函数将用一个“,”替换所有的“.”。如果该值为NULL,将返回一个空字符串
REPLACE(ISNULL(COL01,''),'.',',')
在下面的例子中,第一个将被ISNULL“执行”,因此如果COL01有一个NULL值,那么将返回一个空字符串并传递给REPLACE函数,该函数将用一个“,”替换所有的“.”。如果该值为NULL,将返回一个空字符串
REPLACE(ISNULL(COL01,''),'.',',')
由于替换值永远不会包含
,因此可以使用ISNULL
(或1)包装REPLACE
:
如果NULL
的任何参数只返回NULL
,则无需做任何保护
通常首选1
COALESCE
,因为a)它是标准的SQL,b)它可以泛化为两个以上的参数,c)它遵守正常的类型优先规则<另一方面,code>ISNULL是非标准的,只能使用两个参数调用,并且(如果它使用第二个参数)强制将第二个参数转换为与第一个参数相同的类型
我建议使用
ISNULL
而不是COALESCE
的唯一地方是在表或视图中创建计算列时,传递的第二个参数为非NULL,而且,您希望元数据中列的定义为非null
,因为您的替换值永远不会包含
,您可以将REPLACE
包装为ISNULL
(或1):
如果NULL
的任何参数只返回NULL
,则无需做任何保护
通常首选1
COALESCE
,因为a)它是标准的SQL,b)它可以泛化为两个以上的参数,c)它遵守正常的类型优先规则<另一方面,code>ISNULL是非标准的,只能使用两个参数调用,并且(如果它使用第二个参数)强制将第二个参数转换为与第一个参数相同的类型
我建议使用ISNULL
而不是COALESCE
的唯一地方是,当您在表或视图中创建计算列时,要传递的第二个参数为非NULL,并且您希望元数据中的列定义为非NULL
“doesnt work”不是一个好的问题描述。当COL01为/不为空时,您希望得到什么结果?您得到了什么(错误、意外结果等)?请通过编辑您的帖子来指定。“不起作用”不是一个好的问题描述。当COL01为/不为空时,您希望得到什么结果?您得到了什么(错误、意外结果等)?请通过编辑您的帖子来指定。