我需要一些帮助来了解这行T-SQL代码

时间:2019-06-02 21:32:06

标签: tsql

我在书中阅读了这一行代码,但无法完全理解其应用。我了解这是关于隐式转换的,但是并没有完全理解某些代码的目的。

DECLARE @sql NVARCHAR(

SELECT ISNULL(''5'', 5),

ISNULL(5, ''5''),

COALESCE(''5'', 5),

COALESCE(5, ''5'') ;

' ;

EXEC sp_executesql @sql ;

SELECT column_ordinal,

is_nullable,

system_type_name

FROM master.sys.dm_exec_describe_first_result_set(@sql, NULL, 0) a ;

1 个答案:

答案 0 :(得分:1)

我会费力地猜测它是旨在作为可执行代码,以证明两个相似的TSQL函数之间的区别。此示例应产生预期的结果:

SELECT column_ordinal, is_nullable, system_type_name FROM sys.dm_exec_describe_first_result_set  
  ( N'SELECT ISNULL(''5'', 5), ISNULL(5, ''5''), COALESCE(''5'', 5), COALESCE(5, ''5'');', null, 0);

有一个SQL Fiddle示例here

仔细阅读IsNull()Coalesce()的文档,特别注意每个文档的返回类型,将解释结果。 Data Type Precedence也是说明性的。