Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在同一选择中使用replace和isnull_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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

Sql 在同一选择中使用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,''),

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

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为/不为空时,您希望得到什么结果?您得到了什么(错误、意外结果等)?请通过编辑您的帖子来指定。