sql - 在数据库中查找特定数据
问题描述
我有以下查询,可从中搜索数据库中的给定列名。但是,我也希望能够显示该列的第一行,以便查看列中包含哪些数据。
有没有有效的方法来做到这一点?
SELECT c.name AS 'ColumnName'
,t.name AS 'TableName'
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%Insert Data Here%'
ORDER BY TableName
,ColumnName;
解决方案
您可以将选择构建到变量中并像下面那样执行它。您可能会遇到问题,具体取决于您的数据类型(例如,我有一列会根据我的搜索值生成此消息
不允许从数据类型 image 到 varchar(max) 的显式转换。
但是,对于普通数据类型,这应该适合您:
DECLARE @searchKey NVARCHAR(100) = 'name' --this is what you're looking for in the column name
, @selectCommand NVARCHAR(MAX)
SELECT @selectCommand = COALESCE(@selectCommand + ' union all ','') + 'select top 1 '''+ i.COLUMN_NAME+''' AS ColumnName, ''['+ i.TABLE_SCHEMA+'].['+ i.TABLE_NAME+']'' AS TableName, try_convert(varchar(max),'+ i.COLUMN_NAME+') AS SampleData FROM ['+ i.TABLE_SCHEMA+'].['+ i.TABLE_NAME+'] '
FROM INFORMATION_SCHEMA.COLUMNS i
WHERE i.COLUMN_NAME LIKE N'%'+@searchKey+'%'
EXEC(@selectCommand)
结果看起来像这样,@searchKey 为“名称”:
ColumnName TableName SampleData
name [dbo].[table_1] person 1
NAME [dbo].[asffaef] rose
name [dbo].[tablefeoe] ashely
DatabaseName [dbo].[Untitled - 3] NULL
LoginName [dbo].[Untitled - 3] NULL
推荐阅读
- c# - 在 Winform C# 中拖放 Pdf 文件、Word 文件、Excel 文件
- c++ - QT setMouseTracking(true) 完全没有效果
- string - 如何在不使用第三个变量的情况下交换两个字符串值
- php - 我想在登录时隐藏登录按钮和注册
- r - 将缺失值占位符添加到数据框中,以便 geom_line 在没有观察时中断
- php - 如何在 Laravel 中使用查询 mysql concat?
- python - Tensorflow:训练预训练模型
- javascript - 如何将 CSS 文件与 HTML 文件一起发送?
- excel - 循环遍历 VBA 中的列
- html - 如何通过一个路由器链接运行两种形式?