Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 Server:在选择中显示NULL的默认值_Sql_Sql Server_Select_Null_Default Value - Fatal编程技术网

SQL Server:在选择中显示NULL的默认值

SQL Server:在选择中显示NULL的默认值,sql,sql-server,select,null,default-value,Sql,Sql Server,Select,Null,Default Value,我有一个存储过程,它根据一些选择创建XML字符串 如果其中一个select返回NULL,是否有一种方法可以显示默认值? 基本上,我只想在XML中保持相同的结构,与值是否为NULL无关。当前,XML仅显示带有值的记录 存储过程示例: 非常感谢你在这方面的帮助,蒂姆 试试这样的东西 SELECT coalesce(A.ranking,0) as ranking ( SELECT coalesce(B.groupName,''

我有一个存储过程,它根据一些选择创建XML字符串

如果其中一个select返回NULL,是否有一种方法可以显示默认值? 基本上,我只想在XML中保持相同的结构,与值是否为NULL无关。当前,XML仅显示带有值的记录

存储过程示例:


非常感谢你在这方面的帮助,蒂姆

试试这样的东西

SELECT      coalesce(A.ranking,0) as ranking
            (
                SELECT      coalesce(B.groupName,'') as groupName,
                            (
                                SELECT      C.policy,
                                            C.groupCount
                                FROM        @temp C
                                WHERE       C.ranking = A.ranking
                                AND         C.groupName = B.groupName
                                ORDER BY    C.groupCount desc, C.policy
                                FOR XML PATH(''), ELEMENTS, TYPE
                            ) AS groupName
                FROM        @temp B
                WHERE       B.ranking = A.ranking
                GROUP BY    B.groupName
                ORDER BY    B.groupName
                FOR XML PATH(''), ELEMENTS, TYPE
            )
FROM        @temp A
GROUP BY    A.ranking
ORDER BY    A.ranking
FOR XML PATH('policyRanking'), ELEMENTS, TYPE, ROOT('ranks')

试试这样的

SELECT      coalesce(A.ranking,0) as ranking
            (
                SELECT      coalesce(B.groupName,'') as groupName,
                            (
                                SELECT      C.policy,
                                            C.groupCount
                                FROM        @temp C
                                WHERE       C.ranking = A.ranking
                                AND         C.groupName = B.groupName
                                ORDER BY    C.groupCount desc, C.policy
                                FOR XML PATH(''), ELEMENTS, TYPE
                            ) AS groupName
                FROM        @temp B
                WHERE       B.ranking = A.ranking
                GROUP BY    B.groupName
                ORDER BY    B.groupName
                FOR XML PATH(''), ELEMENTS, TYPE
            )
FROM        @temp A
GROUP BY    A.ranking
ORDER BY    A.ranking
FOR XML PATH('policyRanking'), ELEMENTS, TYPE, ROOT('ranks')
使用函数,将每个可为空的列替换为表达式see table definition:

 ISNULL ( column , default_value )
使用函数,将每个可为空的列替换为表达式see table definition:

 ISNULL ( column , default_value )

谢谢您能解释一下coalesce在这里做什么吗?如果列为NullThank,则coalesce将设置作为第二个参数输入的值!您能解释一下coalesce在这里做什么吗?如果列为NULL,则coalesce将设置作为第二个参数输入的值