1
我想根据列名,类型等查询一组表。我基本上不知道表的名称,我想查询数据库中所有能够存储表的表数据进入。根据列信息查询表名
我有这个查询,但我不知道它是否非常有效。我想知道是否有更好的方法。
SELECT O.TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS AS O
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS R1
ON R1.TABLE_NAME = O.TABLE_NAME and R1.COLUMN_NAME = 'Id' and R1.DATA_TYPE = 'uniqueidentifier'
INNER JOIN INFORMATION_SCHEMA.COLUMNS as R2
ON R2.TABLE_NAME = O.TABLE_NAME and R2.COLUMN_NAME = 'Message' and R2.DATA_TYPE = 'nvarchar'
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS R3
ON R3.TABLE_NAME = O.TABLE_NAME and R3.COLUMN_NAME = 'EnteredOn' and R3.DATA_TYPE = 'datetime'
GROUP BY O.TABLE_NAME
此查询当前有效,但我觉得必须有更好的方法。基本上我不希望其他表显示可能有名称为Id的列而不是列Message和EnteredOn。
这是表的CREATE TABLE查询。
CREATE TABLE [dbo].[Log](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[Message] [nvarchar](2048) NULL,
[EnteredOn] [datetime] NOT NULL,
CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
愿我们问为什么? – gbn 2009-12-29 20:43:26
当然,但我认为我回答了这个问题?我想向需要从此列表中选择的接口提供可能的表的列表。基本上,我的界面需要获得与特定模式匹配的表的列表,以确保正确的列可供使用。 – 2009-12-29 21:14:54