Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > microsoft.public.it.sql > #7911

Re: Ricerca di una stringa in tutte le colonne di tutte le tabelle del

Newsgroups microsoft.public.it.sql
Date 2019-02-04 07:21 -0800
References <54F6B0D0-FC52-44A3-93F4-079C5290478C@microsoft.com>
Message-ID <7f556e27-c44e-4f41-a633-e24e51a6647e@googlegroups.com> (permalink)
Subject Re: Ricerca di una stringa in tutte le colonne di tutte le tabelle del
From famigliagaspari@gmail.com

Show all headers | View raw


Il giorno lunedì 17 maggio 2010 17:02:01 UTC+2, Pasqualino ha scritto:
> Salve,
> qualcuno conosce una query che mi permetta di ricercare un dato in tutte le 
> colonne di tutte le tabelle di un database? Mi spiego:
> 
> - Ho un database con N tabelle
> - Ogni tabella ha M colonne
> 
> Avrei bisogno  di una query che mi permetta di cercare una stringa(ad 
> esempio) in tutte le M colonne di tutte le N tabelle del mio database! 
> Vagamente una query come questa (che  però permette di trovare tutte le 
> colonne con un certo nome in un database):
> 
> SELECT t.name AS table_name,
> SCHEMA_NAME(schema_id) AS schema_name,
> c.name AS column_name
> FROM sys.tables AS t
> INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
> WHERE c.name LIKE '%YOUR_Column_NAME%'
> ORDER BY schema_name, table_name;
> 
> Grazie

--non voglio ricevere informazioni sul numero di righe selezionate
Set NoCount On
 
--Dichiarazione variabile contenente la stringa da ritrovare
Declare @strToFind varchar(max) = 'serverml350'
 
--Dichiarazione variabili d'appoggio
Declare @strSchema sysname = ''
Declare @strTab sysname = ''
Declare @StrFieldsList varchar(Max) = ''
Declare @StrWhereFieldsList varchar(Max) = ''
Declare @strSql varchar(max) = ''
 
--variabile tabella contenente la le tabelle e i campi testuali
Declare @Tabs table(
TABLE_SCHEMA sysname
,TABLE_NAME sysname
)
 
Insert into @Tabs
Select Distinct TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE in ('char','nchar','varchar','nvarchar')
Order by TABLE_SCHEMA,TABLE_NAME
 
--Fino a che ci sono righe nella variabile tabella
While 1=1
Begin
 
 --operazioni preliminari per formattare la select di ricerca
 Set @StrFieldsList = ''
 Set @StrWhereFieldsList = ''
 
 Select Top 1 @strSchema = TABLE_SCHEMA, @strTab=TABLE_NAME from @Tabs
 Order by TABLE_SCHEMA,TABLE_NAME;
 
 --Se la variabile tabella non mi ha restituito la prima riga esco dal ciclo
 --perchè ho esaurito le tabelle su cui implementare la ricerca
 IF @@ROWCOUNT=0
 Break;
 
 --Formatto la stringa per ricercare il mio dato
 With Fields
 AS
 (
 Select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
 Where DATA_TYPE in ('char','nchar','varchar','nvarchar','text','ntext')
 And TABLE_SCHEMA = @strSchema
 And TABLE_NAME = @strTab
 )
 Select @StrFieldsList = @StrFieldsList + '' + QUOTENAME(COLUMN_NAME) + ' AS ' + QUOTENAME(COLUMN_NAME) + ',',
 @StrWhereFieldsList = @StrWhereFieldsList + QUOTENAME(COLUMN_NAME) + ' Like ''%' + @strToFind + '%'' OR '
 From Fields
 
 Set @strSql = 'Select ''' + QUOTENAME(@strSchema) + ''' As Table_Schema,''' +    QUOTENAME(@strTab) + ''' As Table_Name, ' + Substring(@StrFieldsList,0,LEN(@StrFieldsList))
 + ' from ' + QUOTENAME(@strSchema) + '.' + QUOTENAME(@strTab)
 + ' Where ' + Substring(@StrWhereFieldsList,0,LEN(@StrWhereFieldsList)-2)
 
 --eseguo il comando di ricerca appena generato
 Exec(@strSql)
 
 -- elimino la riga relativa alla tabella appena elaborata
 -- dalla tabella temporanea
 Delete From @Tabs
 Where TABLE_SCHEMA = @strSchema
 And TABLE_NAME = @strTab
 
end

Back to microsoft.public.it.sql | Previous | Next | Find similar


Thread

Re: Ricerca di una stringa in tutte le colonne di tutte le tabelle del famigliagaspari@gmail.com - 2019-02-04 07:21 -0800

csiph-web