IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

rechercher une valeur


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Homme Profil pro
    BI Expert
    Inscrit en
    Décembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : BI Expert

    Informations forums :
    Inscription : Décembre 2005
    Messages : 181
    Points : 139
    Points
    139
    Par défaut rechercher une valeur
    Bonjour,

    je me damande si il y a une requête à exectuter afin de rechercher une valeur dans tous les champs d'une base de données
    exemple: je veux savoir tout les occurences de la valeur 'Brad' dans une base de données, peu importe le champs ou ils se trouvent ou la table qui contient ce champs


  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 357
    Points
    357
    Par défaut
    J'en vois pas tellement l'intérêt...

    Table par table tu peux faire au mieux :

    SELECT count(*) FROM TABLE_A
    WHERE champ1 like '%BRAD%'
    OR CHAMP2 like '%BRAD%'
    ...

    Autre possibilité, tu récupère la liste des tables (information_schema ou sysobjects), puis la liste des champs de chaque table (2 curseurs).

    Tu généres une requete pour chaque champ Char (varchar, nvarchar...) avec le like comme la dessus qui retourne le count dans une table temporaire (tu dis la construire en chaine et la mettre dans une variable pour l'exécuter avec exec (@cmd) par exemple).

    Un peu prise de tête mais bon

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Ce n'est pas la plus rapide des solutions, néanmoins elle donne un résultat par colonne :

    Code : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    DECLARE @ValeurRecherchee VARCHAR(255) SET @ValeurRecherchee = 'toto'
    ---------------------------------------------------------------------
    DECLARE @SQL VARCHAR(1024), -- chaîne de commande SQL
    		@LgValeurRecherchee INT -- longueur du mot à rechercher
     
    SELECT @LgValeurRecherchee = LEN(@ValeurRecherchee)
    SET @ValeurRecherchee = '%' + @ValeurRecherchee + '%'
     
    -- Table qui contiendra le nombre d'occurences par table et par colonne
    DECLARE @TbResultat TABLE
    (
    	nomTable SYSNAME,
    	nomColonnne SYSNAME,
    	nbOccurences INT
    )
     
    -- Liste des tables
    DECLARE curTables CURSOR FOR
    	SELECT name
    	FROM sys.tables
    FOR READ ONLY
     
    DECLARE @nomTable SYSNAME
    OPEN curTables
    FETCH NEXT FROM curTables INTO @nomTable
    WHILE @@FETCH_STATUS = 0
    BEGIN
    	-- Liste des colonnes de cette table
    	DECLARE curColonnes CURSOR FOR
    		SELECT COLONNES.name
    		FROM sys.columns COLONNES
    		JOIN sys.types TYPES ON TYPES.user_type_id = COLONNES.user_type_id
    		WHERE TYPES.name IN ('CHAR', 'VARCHAR', 'NCHAR', 'NVARCHAR')
    		AND OBJECT_NAME(COLONNES.object_id) = @nomTable
    		AND COLONNES.max_length <= @LgValeurRecherchee
    		ORDER BY COLONNES.column_id
    	FOR READ ONLY
     
    	-- Recherche du nombre d'occurences de la chaîne de caractères recherchée
    	DECLARE @nomColonne SYSNAME
    	OPEN curColonnes
    	FETCH NEXT FROM curColonnes INTO @nomColonne
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
    		SET @SQL = 'SELECT ''' + @nomTable + ''', ''' + @nomColonne + ''''
    					+ ', COUNT(*) FROM ' + @nomTable +
    					' WHERE ' + @nomColonne + ' LIKE ''' + @ValeurRecherchee + ''''
     
    		-- Ajout du résultat
    		INSERT INTO @TbResultat
    		EXEC (@SQL)
     
    		-- Colonne suivante
    		FETCH NEXT FROM curColonnes INTO @nomColonne
    	END
    	DEALLOCATE curColonnes
     
    	-- Table suivante
    	FETCH NEXT FROM curTables INTO @nomTable
    END
    DEALLOCATE curTables
     
    -- Resultat
    SELECT *
    FROM @TbResultat
    @++

  4. #4
    Membre habitué
    Homme Profil pro
    BI Expert
    Inscrit en
    Décembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : BI Expert

    Informations forums :
    Inscription : Décembre 2005
    Messages : 181
    Points : 139
    Points
    139
    Par défaut
    ca marche,
    j'ai cru que c'etais juste une truc prédéfinit!
    mais bon la ps fait l'affaire
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  2. [find] Comment rechercher une valeur dans une matrice
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/06/2007, 14h55
  3. expresson reguliere recherche une valeur non presente
    Par mikebranque dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/05/2007, 16h13
  4. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  5. Réponses: 7
    Dernier message: 26/10/2004, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo