我正在研究一个SQL Server 2008 Db,里面有很多表(大约200个)。其中许多表包含名为“CreatedDate”的字段。我正在尝试使用此特定字段标识所有表模式。
是否有SQL查询来执行此操作?
答案 0 :(得分:50)
我会查询information_schema - 它的视图比基础表更具可读性。
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%create%'
答案 1 :(得分:6)
您也可以尝试使用可用于此的许多第三方工具之一。
查询非常适合简单搜索,但如果您需要对数据进行更多操作,请搜索引用,这样您就可以在这些方面做得更好。
此外,当某些对象被加密并且您需要搜索
时,这些非常方便我正在使用免费的ApexSQL Search,但市场上还有更多(也是免费的),例如Red Gate或SSMS Tool Pack。
答案 2 :(得分:5)
select object_name(c.object_id) as table_name
, schema_name(t.schema_id) as schema_name
from sys.columns c
join sys.tables t on c.object_id = t.object_id
where c.name=N'CreatedDate';
如果您还想要其他表属性,它会变得更复杂,但您将引用对象目录视图,如sys.tables,sys.columns等。
答案 3 :(得分:2)
我最喜欢的......
SELECT objParent.name AS parent, obj.name, col.*
FROM sysobjects obj
LEFT JOIN syscolumns col
ON obj.id = col.id
LEFT JOIN sysobjects objParent
ON objParent.id = obj.parent_obj
WHERE col.name LIKE '%Comment%'
OR obj.name LIKE '%Comment%'
上面我正在寻找“评论”。
如果您想要直接匹配,请删除百分号。
这将搜索表,字段和主键名称,约束,视图等内容。
如果您想在使用表格进行修改后搜索StoredProcs(并且需要使procs匹配),请使用以下内容...
SELECT name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Comment%'
希望有帮助,我发现这两个查询非常有用。
答案 4 :(得分:1)
使用此查询:
SELECT
t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name , *
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
Where
( c.name LIKE '%' + '<ColumnName>' + '%' )
AND
( t.type = 'U' ) -- Use This To Prevent Selecting System Tables
答案 5 :(得分:1)
对我来说,我只有读取运行查询的权限,所以我需要经常使用这个函数,这是我使用的:
SELECT *
FROM INFORMATION_SCHEMA.TABLES
where TABLES.TABLE_NAME like '%your table name here%'
你可以用.COLUMNS替换.TABLES然后它会是这样的:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE columns.COLUMN_NAME like '%your column name here%'
答案 6 :(得分:0)
同样的事情,但以ANSI方式
选择 * 从 INFORMATION_SCHEMA.TABLES 哪里 TABLE_NAME IN( 选择 TABLE_NAME 从 INFORMATION_SCHEMA.COLUMNS 哪里 COLUMN_NAME ='CreateDate' )
答案 7 :(得分:0)
您无需在SQL Server 2008中为此键入SQL Query。
在SSMS对象资源管理器中,选择所需数据库的数据库或表(如果需要在一个数据库中搜索),打开菜单View - &gt;对象资源管理器详细信息(或按F7),在搜索文本框中键入%CreatedDate%,ENTER,享受