Activité-Paranormale


Red devil Information

Publicité

Rechercher

Développement

Apportez vos talents de codeur !

Développer

Citations

Random quotation
Quand l'esprit ne résiste plus, qu'il ne fuit ni ne blâme ce qui est, mais se contente d'être conscient avec passivité, il s'aperçoit que, dans cette passivité même, vient une transformation.
(Jiddu Krishnamurti)

Événements - 10 avril

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é