Activité-Paranormale


Red devil Information

Publicité

Rechercher

Développement

Apportez vos talents de codeur !

Développer

Visiteurs

Citations

Random quotation
Je n'ai rien à offrir que du sang, du labeur, des larmes et de la sueur.
(Winston Churchill)

Événements - 18 juillet

Event Calendrier

Validation

Valid XHTML 1.0 Transitional Valid CSS!

Crystal ballTour de magie

AbductionPostGreSQL - Rechercher une valeur dans toutes les tables

Je vous présente ici une fonction PostGreSQL permettant de rechercher une valeur donnée dans l'ensemble des champs de toutes les tables d'une base de données.

Fonction :

CREATE OR REPLACE FUNCTION search_whole_db(_like_pattern text)
  RETURNS TABLE(_tbl regclass, _ctid tid) AS
$func$
BEGIN
   FOR _tbl IN
      SELECT c.oid::regclass
      FROM   pg_class c
      JOIN   pg_namespace n ON n.oid = relnamespace
      WHERE  c.relkind = 'r'                           -- only tables
      AND    n.nspname !~ '^(pg_|information_schema)'  -- exclude system schemas
      ORDER BY n.nspname, c.relname
   LOOP
      RETURN QUERY EXECUTE format(
         'SELECT $1, ctid FROM %s t WHERE t::text ~~ %L'
       , _tbl, '%' || _like_pattern || '%')
      USING _tbl;
   END LOOP;
END
$func$  LANGUAGE plpgsql;

Utilisation :

SELECT * FROM search_whole_db('mypattern');

 



PostgreSQL


Publicité