SQL - 通过某个字段名称找到数据库中对应的表

it2022-05-06  5

  工作中,我们经常会碰到会为一个已有的系统增加一些东西,如在报表中增加一些字段,或者在导出Excel文件时增加一些Column. 这时侯,我们不知道我们需要的数据在数据库中的哪个表中。至少,我们知道这个字段的名称吧!那我们就通过字段名称来找到数据库中对应的表。下面给出代码示例:

USE AdventureWorks GO select DISTINCT object_name (id) from syscolumns where name like ' %EmployeeID% ' order by 1 GO

  我需要找到EmployeeID是从哪个表里面来的,通过运行上面一条语句,可以找到所有使用了EmployeeID的表,视图,存储过程,函数等等。通过名称排除视图,存储过程,函数等等,剩下的都是表了。仔细分析一下,不难找到EmployeeID的主表。

      object_name(id):返回指定id的对象名称;

  syscolumns: 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。该表位于每个数据库中;

  name : 是syscolumns 中的列,存储列名或过程参数的名称。

既然syscolumns是表示数据库系统中的行集,那sysobjects 就表示系统中所有的对象集,如表,视图等。下面的数据库语句可以查询数据库中是否含有指定表。

select * from sysobjects where object_name (id) in ( ' OE_ORDER_LINES_ALL ' , ' OE_ORDER_HEADERS_ALL ' , ' OE_TRANSACTION_TYPES_TL ' , ' FNDLOOKUPVALUES ' , ' HZ_CUST_SITE_USES_ALL ' , ' HZ_CUST_ACCT_SITES_ALL '

哈哈!happy programming!!!

转载于:https://www.cnblogs.com/Dannier/archive/2011/01/19/1939115.html


最新回复(0)