如果列名不存在,则返回空字符串

时间:2013-02-20 08:35:14

标签: sql

我有一个非常简单的选择语句,如

SELECT Column-Name
FROM Object
WHERE ID = 123

动态生成Column-Name。如果列不存在,是否有可能获得空字符串?

2 个答案:

答案 0 :(得分:0)

这对SQL Server来说是一个巨大的攻击

SQL是基于批处理的:当提交给数据库引擎时,整个批处理都被解析并编译了一个计划。如果列或对象不存在,则会出错。

您可以测试元数据以查看它是否存在(COLUMNPROPERTY),然后使用EXECSELECT置于单独的批次中

IF COLUMNPROPERTY(OBJECT_ID('Object'), 'Column-Name', 'ColumnID') IS NOT NULL
   EXEC ('SELECT Column-Name FROM Object WHERE ID = 123')
ELSE
   SELECT '' AS Column-Name;

就个人而言,我绝不希望这是在生产代码中或在我的数据库服务器上运行。

答案 1 :(得分:0)

为什么不在发出查询之前执行desc object或类似的事情并验证列名是否存在? 否则你最终会做有趣的事情来解决sql错误