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

Jak přetypuji řetězec na celé číslo a budu mít 0 v případě chyby při přetypování s PostgreSQL?

Sám jsem zrovna zápasil s podobným problémem, ale nechtěl jsem režii funkce. Přišel jsem s následujícím dotazem:

SELECT myfield::integer FROM mytable WHERE myfield ~ E'^\\d+$';

Postgres zkracuje své podmínky, takže byste neměli dostat žádná jiná než celá čísla, která zasahují do vašeho ::integer obsazení. Zpracovává také hodnoty NULL (nebudou odpovídat regulárnímu výrazu).

Pokud chcete nuly místo nevybírání, pak by měl fungovat příkaz CASE:

SELECT CASE WHEN myfield~E'^\\d+$' THEN myfield::integer ELSE 0 END FROM mytable;


  1. Funkce MySQL CEILING() – zaokrouhlení nahoru na nejbližší celé číslo

  2. Jak rozdělit hodnotu oddělenou čárkami do sloupců

  3. Porovnání výkonu a cen PostgreSQL DigitalOcean – ScaleGrid vs. DigitalOcean Managed Databases

  4. Jak opravit:Nebyl nalezen vhodný ovladač pro chybu jdbc:mysql://localhost/dbname při používání fondů?