Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 在查询中获取当前表名_Sql_Sql Server_Tablename - Fatal编程技术网

Sql 在查询中获取当前表名

Sql 在查询中获取当前表名,sql,sql-server,tablename,Sql,Sql Server,Tablename,可以在select语句中获取表名吗 例如: SELECT Id, "Users" as TableName FROM Users 我不想手动编写“用户”,而是根据FROM语句确定它 我正在进行从一个数据库到另一个数据库的迁移(使用不同的结构),我有一个存储旧表名的映射表,这就是我需要它的原因(它不太容易出错)。您可以使用以下子查询来获取此信息(适用于SQL Server 2012+): 速度非常慢,在侧页分配上缓存会加快速度。您可以使用以下子查询来获取此信息(适用于SQL Server 201

可以在select语句中获取表名吗

例如:

SELECT Id, "Users" as TableName
FROM Users
我不想手动编写
“用户”
,而是根据
FROM
语句确定它


我正在进行从一个数据库到另一个数据库的迁移(使用不同的结构),我有一个存储旧表名的映射表,这就是我需要它的原因(它不太容易出错)。

您可以使用以下子查询来获取此信息(适用于SQL Server 2012+):


速度非常慢,在侧页分配上缓存会加快速度。

您可以使用以下子查询来获取此信息(适用于SQL Server 2012+):


速度非常慢,侧页分配上的缓存将加快速度。

或者,如果要对所有表执行此操作,可以使用以下存储过程:

USE [DB_NAME]
EXEC sp_msforeachtable 'SELECT Id, ''?'' AS [TableName] FROM ?'

也许它会对某些人有所帮助:)

或者,如果要对所有表执行此操作,可以使用以下存储过程:

USE [DB_NAME]
EXEC sp_msforeachtable 'SELECT Id, ''?'' AS [TableName] FROM ?'

也许这对某人会有帮助:)

简短回答否。长回答,是的,如果您使用动态SQL并将表名作为安全注入值传递,然后在
选择中显示该参数的值(有效地执行您不想执行的操作)。否,你不能。最好把你的数据库分成两个域。即“数据库对象”和“数据库数据”。“数据库对象”是表、视图、过程、用户、模式等。“数据库数据”是存储在表中的信息。这就是为什么我们有“DML”和“DDL”类型的语句。通常不可能在同一SQL语句中的语句之间进行交叉。这样做的愿望常常表明数据库设计不好,但并非总是如此。在您的情况下,这是有意义的。短答案否。长答案,是的,如果您使用动态SQL并将表名作为安全注入值传递,然后在
SELECT
中显示该参数的值(有效地执行您不希望执行的操作)。不,您不能。最好将数据库拆分为两个域。即“数据库对象”和“数据库数据”。“数据库对象”是表、视图、过程、用户、模式等。“数据库数据”是存储在表中的信息。这就是为什么我们有“DML”和“DDL”类型的语句。通常不可能在同一SQL语句中的语句之间进行交叉。这样做的愿望常常表明数据库设计不好,但并非总是如此。在你的情况下,这是有道理的。正如前面提到的,这就像西伯利亚冻土带上的糖蜜一样缓慢,但它确实有效……需要注意的是,你只能从一张桌子上选择。如果你有一个连接,这将失败。当然,这是一个没有文档的函数,这通常是个坏主意。仍然是+1,因为它确实提供了所请求的信息。正如前面提到的,这就像西伯利亚冻土带上的糖蜜一样缓慢,但它确实有效……需要注意的是,您只能从单个表中进行选择。如果你有一个连接,这将失败。当然,这是一个没有文档的函数,这通常是个坏主意。仍然是+1,因为它确实提供了所请求的信息。