我有一个非常简单的选择语句,例如
SELECT Column-Name
FROM Object
WHERE ID = 123
是Column-Name
动态生成的。如果列不存在,是否有可能获得空字符串?
我有一个非常简单的选择语句,例如
SELECT Column-Name
FROM Object
WHERE ID = 123
是Column-Name
动态生成的。如果列不存在,是否有可能获得空字符串?
为什么不在desc object
触发查询之前执行 a 或类似的操作并验证列名是否存在?否则你最终会做一些有趣的事情来解决 sql 错误
这对 SQL Server 来说是一个巨大的 hack
SQL 是基于批处理的:当提交给数据库引擎时,整个批处理被解析并编译一个计划。如果列或对象不存在,您将收到错误消息。
您可以测试元数据以查看它是否存在(COLUMNPROPERTY
),然后使用EXEC
将其SELECT
放在单独的批次中
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;
就个人而言,我从没想过它会出现在生产代码中或在我的数据库服务器上运行。