2017-12-11 1 views
-3

SQL DB内の特定の文字列を検索したい。私は、DBから検索する知っているが、私は、検索文字列がどのテーブルかわからない。特定の文字列についてSQL Server DBを検索するにはどうすればよいですか?

+0

'をGETするには、' これに対する答えを参照してください:https://stackoverflow.com/questions/23481973/selecting-column-names-that-を指定値あり/ 23482530#23482530 – pmbAustin

+0

[指定された値を持つ列名を選択する](https://stackoverflow.com/questions/23481973/selecting-column-names-that-have-specified-value) – DeanOC

+1

の可能な複製可能な複製:https://stackoverflow.com/questions/9185871/how-to-search-sql-server-database-for-string –

答えて

-1

下記のコードが役立つかどうかを確認してください。このコードはこのsiteにあります。私は試してみませんでしたが、私は試してみて、私が働いていると知っていました。

DECLARE @SQL VARCHAR(8000) 
DECLARE @filtro VARCHAR(200) 
DECLARE @filtro_www VARCHAR(200) 

-- start sql declaration 
SET @SQL = '' 
SET @filtro = '%text_searched%' 

SELECT 
    tabelas.name AS Tabela 
    ,colunas.name AS Coluna 
    ,tipos.name  AS Tipo 
    ,colunas.length AS Tamanho 
INTO 
    #result 
FROM 
    sysobjects tabelas 
    INNER JOIN syscolumns colunas 
    ON colunas.id = tabelas.id 
    -- 
    INNER JOIN systypes tipos 
    ON tipos.xtype = colunas.xtype 
WHERE 
    tabelas.xtype = 'u' 
    AND 
    -- put here the type of column that will be search 
    tipos.name IN('text', 'ntext', 'varchar', 'nvarchar') 


-- cursor to search into table 
DECLARE cTabelas cursor LOCAL fast_forward FOR 
SELECT DISTINCT Tabela FROM #result 

DECLARE @nomeTabela VARCHAR(255) 

OPEN cTabelas 

fetch NEXT FROM cTabelas INTO @nomeTabela 

while @@fetch_status = 0 
BEGIN 

    -- cursor to search for all columns in the current table 
    DECLARE cColunas cursor LOCAL fast_forward FOR 
    SELECT Coluna, Tipo, Tamanho FROM #result WHERE Tabela = @nomeTabela 

    DECLARE @nomeColuna VARCHAR(255) 
    DECLARE @tipoColuna VARCHAR(255) 
    DECLARE @tamanhoColuna VARCHAR(255) 

    OPEN cColunas 

    -- mount the columns from select statement 
    fetch NEXT FROM cColunas INTO @nomeColuna, @tipoColuna, @tamanhoColuna 

    while @@fetch_status = 0 
    BEGIN 
    -- declare variable 
    SET @SQL = 'declare @hasresults bit' + CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10) 
    -- cria o select 
    SET @SQL = @SQL + 'select' + CHAR(13) + CHAR(10) 
    SET @SQL = @SQL + CHAR(9) + '''' + @nomeTabela + ''' AS NomeTabela' 
    SET @SQL = @SQL + CHAR(9) + ',' + @nomeColuna + CHAR(13) + CHAR(10) 
    -- add a column with type and size 
    SET @SQL = @SQL + CHAR(9) + ',' + '''' + @tipoColuna + ''' AS ''' + @nomeColuna + '_Tipo''' + CHAR(13) + CHAR(10) 
    SET @SQL = @SQL + CHAR(9) + ',' + 'DATALENGTH(' + @nomeColuna + ') AS ''' + @nomeColuna + '_Tamanho_Ocupado''' + CHAR(13) + CHAR(10)  
    SET @SQL = @SQL + CHAR(9) + ',' + '''' + @tamanhoColuna + ''' AS ''' + @nomeColuna + '_Tamanho_Maximo''' + CHAR(13) + CHAR(10) 

    -- define temporary table(#result) 
    SET @SQL = @SQL + 'into' + CHAR(13) + CHAR(10) + CHAR(9) + '#result_' + @nomeTabela + CHAR(13) + CHAR(10) 
    -- add the from statement 
    SET @SQL = @SQL + 'from' + CHAR(13) + CHAR(10) + CHAR(9) + @nomeTabela + CHAR(13) + CHAR(10) 
    -- start assembly of the clause where 
    SET @SQL = @SQL + 'where' + CHAR(13) + CHAR(10) 
    SET @SQL = @SQL + CHAR(9) + @nomeColuna + ' like ''' + @filtro + '''' + CHAR(13) + CHAR(10) 

    SET @SQL = @SQL + CHAR(13) + CHAR(10) + 'select @hasresults = count(*) from #result_' + @nomeTabela + CHAR(13) + CHAR(10) 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) + 'if @hasresults > 0' 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) + 'begin' 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) + CHAR(9) + 'select * from #result_' + @nomeTabela 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) + 'end' + CHAR(13) + CHAR(10) 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) + 'drop table #result_' + @nomeTabela 
    SET @SQL = @SQL + CHAR(13) + CHAR(10) 

    fetch NEXT FROM cColunas INTO @nomeColuna, @tipoColuna, @tamanhoColuna 
    -- uncomment the line below to see Sql generated into window messages 
    -- print @sql 
    EXEC(@SQL) 
    SET @SQL = '' 
    END 

    close cColunas 
    deallocate cColunas 

    fetch NEXT FROM cTabelas INTO @nomeTabela 
END 

close cTabelas 
deallocate cTabelas 

DROP TABLE #result 

ポルトガル語ではいくつかの名前がありますが、名前のみで置き換えられます。名前だけです。

-1
SELECT * 
FROM ‘dbName’ 
WHERE name LIKE '%String%' 

あなたは、いくつかのSQLステートメントを知っていない場合は、これを試してくださいミリ秒のアクセスに行くと取得することができますそこから非常によく似ているSQLステートメント

0

あなたはそれが私のために使用されている問題を解決するために使用されているオブジェクトを見つけるために働くことができます。

DECLARE @TOSEARCH NVARCHAR(50)=

SELECT m.name, modify_date FROM ( SELECT DISTINCT so.name FROM syscomments sc INNER JOIN sysobjects so ON sc.id=so.id WHERE sc.TEXT LIKE '%'[email protected]+'%' ) m LEFT JOIN sys.objects ON sys.objects.name = m.name ORDER BY modify_date DESC

関連する問題