【发布时间】:2019-10-31 19:26:08
【问题描述】:
是否可以在select语句中获取表名?
例子:
SELECT Id, "Users" as TableName
FROM Users
我不想手动写"Users",而是根据FROM语句来确定。
我正在从一个数据库迁移到另一个数据库(具有不同的结构),并且我有一个存储旧表名的映射表,所以这就是我需要这个的原因(它不太容易出错)。
【问题讨论】:
-
简答无。长答案,是的,如果您使用动态 SQL 并将表名作为 安全 注入值传递,那么您将在
SELECT中显示该参数的值(有效地做您不想要的做)。 -
不,你不能。
-
最好将您的数据库视为分为两个域。即“数据库对象”和“数据库数据”。 “数据库对象”是表、视图、过程、用户、模式等。“数据库数据”是您存储在表中的信息。这就是我们有“DML”和“DDL”类型语句的原因。在同一个 SQL 语句中的那些之间的交叉通常是不可能的。这样做的愿望通常表明数据库设计不佳,但并非总是如此。在你的情况下,这是有道理的。
标签: sql sql-server tablename