哪个表包含此数据+SQL
我有一个包含100个表的数据库。 如何知道哪个表包含特定文本 例如,哪个表包含文本“假定寿命索赔” 我可以暗示这个字段是varchar哪个表包含此数据+SQL,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个包含100个表的数据库。 如何知道哪个表包含特定文本 例如,哪个表包含文本“假定寿命索赔” 我可以暗示这个字段是varchar SQL SERVER 2008ypercube的建议完全正确。下面是一个实现: DECLARE @searchText VARCHAR(100) SET @searchText = 'Assumed Life Claims' DECLARE @sqlText VARCHAR(8000) DECLARE @MaxId INT DECLARE @CurId INT
SQL SERVER 2008ypercube的建议完全正确。下面是一个实现:
DECLARE @searchText VARCHAR(100)
SET @searchText = 'Assumed Life Claims'
DECLARE @sqlText VARCHAR(8000)
DECLARE @MaxId INT
DECLARE @CurId INT
DECLARE @possibleColumns TABLE (Id INT IDENTITY(1, 1) NOT NULL PRIMARY KEY
,sqlText VARCHAR(8000))
INSERT INTO @possibleColumns(sqlText)
SELECT 'IF EXISTS (SELECT * FROM ' + c.TABLE_NAME + ' WHERE ' + c.COLUMN_NAME + ' = ''' + @searchText + ''') PRINT '' searchText=' + @searchText + ' was found in ' + c.TABLE_NAME + '.' + c.COLUMN_NAME + ''''
FROM INFORMATION_SCHEMA.COLUMNS c
-- Using hint that this field is a varchar
WHERE c.DATA_TYPE = 'varchar'
SELECT @CurId = MIN(pc.Id)
,@MaxId = MAX(pc.Id)
FROM @possibleColumns pc
WHILE (@CurId <= @MaxId)
BEGIN
SELECT @sqlText = pc.sqlText
FROM @possibleColumns pc
WHERE pc.Id = @CurId
-- For testing (uncomment)
--PRINT @sqlText
EXEC(@sqlText)
-- Increment counter
SET @CurId = @CurId + 1
END
SQL Server、MySQL、Postgres、Oracle、SQLite等等。。。?哪种数据库管理系统?我知道mssql中的CONTAINSTABLE可以是其他数据库中的其他全文搜索功能。使用Dymanic SQL,查找所有具有varchar列和列名称的表,然后搜索这些列。关于如何使用第一部分的信息模式,请参见此处:谢谢。。。。。谢谢大家我从@user444569获得了这个链接,我看到你粘贴的链接也有助于回答你的问题,但我觉得我的答案是完整的,我已经投入了时间来测试它,并相信它是无错误的。如果不是,我希望你能分享你提到的错误的细节,以便我能帮助完善我提供的答案。谢谢。请从INFORMATION_SCHEMA.columns中选择*,其中列名称(如“%”++@SearchStr++“%”搜索表列名