IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Fabien Celaia

Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server

Noter ce billet
par , 19/02/2018 à 15h17 (1245 Affichages)
Voilà peu, j'avais créé la fonction trouvetout pour Oracle.

Voici son quasi-pendant pour Microsoft SQL Server.

Pour rappel : cette procédure permet de retrouve une chaîne de caractère quelconque dans la base en cours. Exécutant une recherche non-indexée sur de nombreuses colonnes, elle doit être employée avec modération, et pas sur des environnements de production !

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
create procedure trouvetout (@chaine varchar(max))
as
begin
declare @taille_min int 
declare @slike varchar(max)
declare @tbl sysname, @sch sysname, @col sysname
declare @sSQLDyn varchar(max)
declare @resultat int
 
set @taille_min=len(@chaine)
set @slike='%'+@chaine+'%'
 
declare c_table cursor for 
    select object_name(tb.object_id) TBL,schema_name(tb.schema_id) SCH , c.name col
    from sys.tables tb 
    inner join sys.columns c on tb.object_id=c.object_id
    inner join sys.types t on c.user_type_id=t.user_type_id
    where c.max_length>=0--@taille_min 
    and tb.type_desc='USER_TABLE'
    and t.collation_name is not null
 
create table #tbresultat (sch sysname, tbl sysname, col sysname, resultat int)
 
open c_table
 
fetch c_table into @tbl, @sch, @col
 
while @@FETCH_STATUS = 0
    begin
    select 'Traitement de '+@sch+'.'+@tbl+'.'+ @col 
    set @sSQLDyn = 'insert into  #tbresultat select '''+@sch+''', '''+@tbl+''','''+@col+''', count(*) from '+ @sch + '.'+ @tbl +' where '+ @col +' LIKE '''+ @slike+''''
    execute (@sSQLDyn )
    fetch c_table into @tbl, @sch, @col 
    end 
close c_table
deallocate c_table
select * from #tbresultat where resultat>0
end

Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Viadeo Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Twitter Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Google Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Facebook Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Digg Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Delicious Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog MySpace Envoyer le billet « Trouvetout : trouver une chaîne de caractères dans une base Microsoft SQL Server » dans le blog Yahoo

Mis à jour 29/07/2018 à 18h00 par LittleWhite (Coloration du code)

Catégories
SGBD , Microsoft SQL Server

Commentaires