我想请求帮助。
由于我有500多个表,我需要搜索那些具有相似单词的表格列。是否可以搜索并列出这些表格?
E.g
表1 - 姓名,年龄,身高
表2 - 结果,姓名,分数
表3 - 名称,Pic,Parent1,Parent2
我想进行查询以选择任何列包含单词“%Name%”的所有表,这可能吗?
答案 0 :(得分:1)
只需在数据库中运行以下查询并用字符串替换搜索字符串即可。
DECLARE @SQL VARCHAR(MAX)
DECLARE @valueToFind VARCHAR(1000)
DECLARE @columnName VARCHAR(1000)
SET @valueToFind = 'string'
SET @columnName = '%%'
CREATE TABLE #TMP
(Clmn VARCHAR(500),
CNT INT)
SELECT @SQL=COALESCE(@SQL,'')+CAST('INSERT INTO #TMP Select ''' + TABLE_SCHEMA + '.' + TABLE_NAME + '.' + COLUMN_NAME + ''' AS Clmn, count(*) CNT FROM '
+ TABLE_SCHEMA + '.[' + TABLE_NAME +
'] WHERE [' + COLUMN_NAME + '] LIKE ''%' + @valueToFind + '%'' ;' AS VARCHAR(8000))
FROM INFORMATION_SCHEMA.COLUMNS
JOIN sysobjects B
ON INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = B.NAME
WHERE COLUMN_NAME LIKE @columnName AND xtype = 'U'
AND DATA_TYPE IN ('char','nchar','ntext','nvarchar','text','varchar')
--PRINT (@SQL)
EXEC(@SQL)
SELECT * FROM #TMP WHERE CNT > 0
DROP TABLE #TMP