Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个表包含此数据+SQL_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

哪个表包含此数据+SQL

哪个表包含此数据+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

我有一个包含100个表的数据库。 如何知道哪个表包含特定文本

例如,哪个表包含文本“假定寿命索赔”

我可以暗示这个字段是varchar


SQL SERVER 2008

ypercube的建议完全正确。下面是一个实现:

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++“%”搜索表列名