创建一个SQL Server的存储过程来查找特定列名

在日常的数据库操作中,经常需要查找包含特定列名的表。虽然可以通过编写查询语句来实现,但每次都需要重新编写或保存查询语句,这无疑增加了工作量。为了简化这一过程,本文将介绍如何创建一个存储过程,使其能够像sp_help一样方便地查找列名。

首先,来看一个通常用于搜索列名的查询语句:

SELECT sysobjects.name AS "Table", syscolumns.name AS "Column" FROM sysobjects, syscolumns WHERE sysobjects.id = syscolumns.id AND sysobjects.xtype = 'u' AND syscolumns.name LIKE '%order%' ORDER BY sysobjects.name, syscolumns.name

这个查询语句会返回所有包含'order'文本的列名的表。将以这个查询为基础,创建解决方案。

使用代码

正如前面提到的,希望创建一个类似于sp_help的解决方案,因此将在SQL Server实例的主数据库中创建一个存储过程

代码和原理都很简单,但效果却非常酷。首先,需要获取当前查询窗口的数据库名称:

SET @DataBase = (SELECT DB_NAME())

然后,构建一些动态SQL,包含当前查询窗口的数据库名称(与上面的查询相同),并执行它:

SET @SQL = 'SELECT a.name AS [Table],' SET @SQL = @SQL + ' b.name as [Column] FROM ' + @DataBase + '..sysobjects a, ' + @DataBase + '..syscolumns b WHERE a.id = b.id AND a.xtype = ''u'' AND b.name like ''%' + @ColumnName + '%'' ORDER BY a.name, b.name' EXEC (@SQL)

一旦创建了存储过程,就可以通过以下方式从当前查询窗口中搜索列名:

EXEC sp_column 'order'

使用Northwind数据库时,将得到以下结果:

更多功能

此外,还可以在SQL ServerManagement Studio中为此配置一个键盘快捷键:

从工具菜单中选择选项。在左侧窗格下的环境部分,选择键盘。在其中一个可用的查询快捷键中,输入sp_column:

现在可以轻松地高亮显示正在搜索的列名,例如'order',然后按Ctrl + 3。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485