PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Controllare un'intera tabella per un singolo valore

Puoi usare una funzione speciale del sistema di tipi PostgreSQL:

SELECT *
FROM   tbl t
WHERE  t::text LIKE '%999999%';

Esiste un tipo composito con lo stesso nome per ogni tabella che crei in PostgreSQL. E c'è un text rappresentazione per ogni tipo in PostgreSQL (per immettere / generare valori).

Pertanto puoi semplicemente trasmettere l'intera riga a text e se la stringa '999999' è contenuta in una qualsiasi colonna (il suo text rappresentazione, per la precisione) è garantito che venga mostrato nella query sopra.

Non puoi escludere falsi positivi completamente, però, se i separatori e/o decoratori utilizzati da Postgres per la rappresentazione delle righe possono far parte del termine di ricerca. È solo molto improbabile. E sicuramente non è il caso del tuo termine di ricerca "999999".

C'è stata una domanda molto simile su codereview.SE di recente. Ho aggiunto qualche spiegazione in più nella mia risposta .