我在书中阅读了这一行代码,但无法完全理解其应用。我了解这是关于隐式转换的,但是并没有完全理解某些代码的目的。
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 ;
答案 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也是说明性的。