sql >> Databáze >  >> RDS >> PostgreSQL

Vrátí nečíselné hodnoty ze sloupce databáze PostgreSQL

Následující příklady PostgreSQL vrátí pouze ty řádky, které v daném sloupci nemají číselnou hodnotu.

Ukázková data

Vytvořme tabulku s ukázkovými daty:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
    c1 varchar(255)
);

INSERT INTO t1 (c1) VALUES 
    ('0'),
    ('1'),
    ('+1'),
    ('-1'),
    ('00.00'),
    ('73.45'),
    ('+73.45'),
    ('-73.45'),
    ('.246'),
    ('-.34e7'),
    ('12.e-3'),
    ('1.2e+4'),
    ('a'),
    ('9afc'),
    ('e7'),
    ('+e0'),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1; 

Tabulka byla nyní vytvořena a obsahuje následující údaje:

 c1 ----------- 0 1 +1 -1 00,00 73,45 +73,45 -73,45 ,246 -,34e7 12,e-3 1,2e+4 a 9afc e7 +e0 Deset 5 dolarů 

Sloupec je varchar(255) sloupec, takže není číselný. Může (a obsahuje) čísla, ale ty jsou uloženy jako znaková data. Může také obsahovat libovolný text (což obsahuje).

Vrátí nečíselné hodnoty

K vrácení nečíselných hodnot z výše uvedené tabulky můžeme použít následující dotaz:

SELECT c1
FROM t1 
WHERE c1 !~ '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'; 

Výsledek:

 c1 ----------- 12,e-3 a 9afc e7 +e0 deset 5 dolarů

Vrátí jiná než celá čísla

Pokud chceme vrátit pouze necelá čísla, může být dotaz mnohem jednodušší:

SELECT c1
FROM t1 
WHERE c1 !~ '^[0-9]+$'; 

Výsledek:

 c1 ----------- +1 -1 00,00 73,45 +73,45 -73,45 ,246 -,34e7 12,e-3 1,2e+4 a 9afc e7 +e0 deset 5 dolarů

Neobsahuje číselná data

Pokud chceme najít řádky, které neobsahují číselná data, můžeme udělat následující:

SELECT c1 
FROM t1 
WHERE c1 !~ '[0-9]+'; 

Výsledek:

 c1 ----- a Ten

V PostgreSQL !~ je operátor rozlišující malá a velká písmena, který se používá k vrácení hodnot, které neodpovídají danému regulárnímu výrazu. Pro shody bez rozlišení velkých a malých písmen použijte !~* .

Můžete použít ~ vrátit všechny řádky, které dělají odpovídat regulárnímu výrazu (a ~* pro shody bez rozlišení velkých a malých písmen).


  1. Jak Postgresql COPY TO STDIN with CSV dělá on conflic aktualizaci?

  2. Kurz ovládání Microsoft TreeView

  3. Nyní můžete používat Access s Microsoft Azure MFA!

  4. Závažná chyba:Volání nedefinované funkce session_register()