sql >> Database >  >> RDS >> PostgreSQL

Controleer een hele tabel op een enkele waarde

U kunt een speciale functie van het PostgreSQL-type systeem gebruiken:

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

Er is een composiettype met dezelfde naam voor elke tabel die u in PostgreSQL maakt. En er is een text weergave voor elk type in PostgreSQL (naar invoer- / uitvoerwaarden).

Daarom kun je de hele rij gewoon casten naar text en als de string '999999' in een kolom staat (zijn text representatie, om precies te zijn) het wordt gegarandeerd weergegeven in de bovenstaande zoekopdracht.

U kunt false positives niet uitsluiten volledig, echter als scheidingstekens en / of decorateurs die door Postgres worden gebruikt voor de rijweergave deel kunnen uitmaken van de zoekterm. Het is gewoon erg onwaarschijnlijk. En zeker niet het geval voor uw zoekterm '999999'.

Er was onlangs een zeer vergelijkbare vraag op codereview.SE. Ik heb wat meer uitleg toegevoegd aan mijn antwoord daar .



  1. MYSQL JOIN als veld niet null is

  2. Kan geen UTF8-tekens opslaan in MySQL

  3. Hoe Atan2() werkt in PostgreSQL

  4. Door de gebruiker gedefinieerde MySQL-variabele in WHERE-component