如何从information.schema.columns列表中选择前10行

时间:2017-02-24 18:57:26

标签: sql-server-2008-r2

SELECT TOP 10 
    * 
FROM 
    (SELECT 
         COLUMN_NAME, TABLE_NAME
     FROM 
         INFORMATION_SCHEMA.COLUMNS
     WHERE 
         COLUMN_NAME LIKE '%MAIL%')

我正在尝试从搜索中的每个表中获取前10行。有任何想法吗? SQL Server 2008 R2

2 个答案:

答案 0 :(得分:0)

我会使用游标创建动态SQL,然后执行该SQL。这对你有用吗?

.done(function (data) {
                if (data) {
                    $("#loding").hide();
                    $("#Success").slideDown("slow");
                    // this should do the trick
                    $("#some_id").html(data);

                    $("#codesubmit")[0].reset();
                }
                ...

答案 1 :(得分:0)

虽然nscheaffer的答案是有效的,但我觉得有义务告诉您,您可以在不使用游标的情况下获得完全相同的功能,并且在使用可能更容易实现的查询时也是如此。

根据系统表将所有可能的查询连接在一起,然后同时执行它们,如下所示:

DECLARE @SQL NVARCHAR(MAX)
;
SELECT @SQL = 
    (
    SELECT 'SELECT TOP 10 * FROM ' + OBJECT_NAME(C.Object_ID) + ';' + CHAR(10)
    FROM sys.Columns C
    INNER JOIN sys.Tables T
        ON C.Object_ID = T.Object_ID
        AND T.is_ms_shipped = 0
    WHERE C.Name LIKE '%Mail%'
    GROUP BY C.Object_ID
    ORDER BY C.Object_ID
    FOR XML PATH('')
    )
;
EXEC sp_ExecuteSQL @SQL
;

如果要在运行之前检查SQL,只需注释掉EXEC命令并将其替换为SELECT,如下所示:

SELECT @SQL;
--EXEC sp_ExecuteSQL @SQL
;