top of page

Buscar uma string em um banco SQL Server

  • Foto do escritor: Amanda Nascimento
    Amanda Nascimento
  • 15 de jul. de 2024
  • 3 min de leitura

Atualizado: 31 de ago.


Buscar por qualquer string em uma tabela


DECLARE @schemaName NVARCHAR(128) = 'nomeschema';

DECLARE @tableName NVARCHAR(128) = 'nometabela';

DECLARE @search NVARCHAR(100) = 'string que deseja encontrar';

DECLARE @sql NVARCHAR(MAX) = '';

 

SELECT @sql = @sql + 

    CASE WHEN @sql = '' THEN '' ELSE ' OR ' END +

    QUOTENAME(COLUMN_NAME) + ' LIKE ''%' + @search + '%'''

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_NAME = @tableName

  AND TABLE_SCHEMA = @schemaName

  AND DATA_TYPE IN ('char', 'nchar', 'varchar', 'nvarchar', 'text', 'ntext');

 

IF @sql <> ''

    SET @sql = 'SELECT * FROM ' + QUOTENAME(@schemaName) + '.' + QUOTENAME(@tableName) + ' WHERE ' + @sql;

 

PRINT @sql;

EXEC sp_executesql @sql;

 

 

 

Buscar por qualquer string em um banco de dados


DECLARE @SearchValue NVARCHAR(100) = 'string que deseja encontrar'

DECLARE @SQL NVARCHAR(MAX) = ''

DECLARE @TableName NVARCHAR(128)

DECLARE @ColumnName NVARCHAR(128)

DECLARE @DataType NVARCHAR(128)

 

-- Cursor para iterar sobre todas as tabelas do banco de dados

 

DECLARE table_cursor CURSOR FOR

 

SELECT TABLE_NAME

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE = 'BASE TABLE'

 

OPEN table_cursor


FETCH NEXT FROM table_cursor INTO @TableName

 

WHILE @@FETCH_STATUS = 0

 

BEGIN

 

    -- Para cada tabela, iterar sobre todas as colunas

 

    DECLARE column_cursor CURSOR FOR

 

    SELECT COLUMN_NAME, DATA_TYPE

    FROM INFORMATION_SCHEMA.COLUMNS

    WHERE TABLE_NAME = @TableName

 

    OPEN column_cursor

    FETCH NEXT FROM column_cursor INTO @ColumnName, @DataType

 

    WHILE @@FETCH_STATUS = 0

 

    BEGIN

 

        -- Verificar se o tipo de dados é compatível com a função LIKE

 

        IF @DataType IN ('varchar', 'nvarchar', 'char', 'nchar', 'text', 'ntext')

 

        BEGIN

            -- Construir a consulta SQL dinamicamente

            SET @SQL = @SQL + '

 

            SELECT ''' + @TableName + ''' AS TableName, ''' + @ColumnName + ''' AS ColumnName, [' + @ColumnName + '] AS ColumnValue

            FROM [' + @TableName + ']

            WHERE [' + @ColumnName + '] LIKE ''%' + @SearchValue + '%''

            UNION ALL'

 

        END

        FETCH NEXT FROM column_cursor INTO @ColumnName, @DataType

    END

 

    CLOSE column_cursor

    DEALLOCATE column_cursor

    FETCH NEXT FROM table_cursor INTO @TableName

 

END

 

CLOSE table_cursor

DEALLOCATE table_cursor

 

-- Remover o último 'UNION ALL'

 

IF LEN(@SQL) > 0

BEGIN

    SET @SQL = LEFT(@SQL, LEN(@SQL) - 10)


    -- Executar a consulta dinâmica

 

    EXEC sp_executesql @SQL

END

ELSE

 

BEGIN

    PRINT 'Nenhum dado encontrado que corresponda ao valor pesquisado.'

END



--resultado:

Exemplo: string buscada: Amanda

ree



Buscar por qualquer string em uma coluna


 

SELECT *

FROM [nomeschema].[nometabela]

WHERE descricao LIKE '%pagamento%'

   --OR outra_coluna LIKE '%pagamento%'

© 2017-2025  Criado e desenvolvido por Amanda Nascimento

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page