PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak rzutować ciąg na liczbę całkowitą i mieć 0 w przypadku błędu rzutowania za pomocą PostgreSQL?

Po prostu sam zmagałem się z podobnym problemem, ale nie chciałem obciążać funkcji. Wymyśliłem następujące zapytanie:

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

Postgres skraca swoje warunki warunkowe, więc nie powinieneś otrzymać żadnych liczb niecałkowitych uderzających w rzut ::integer. Obsługuje również wartości NULL (nie będą pasować do wyrażenia regularnego).

Jeśli chcesz zer zamiast nie wybierać, instrukcja CASE powinna działać:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego postgres nie używa indeksu w moim zapytaniu

  2. Jak Atan2d() działa w PostgreSQL

  3. Jak wypróbować wiele opcji SELECT, aż wynik będzie dostępny?

  4. PostgreSQL:Wyszukiwanie pełnotekstowe - Jak wyszukiwać częściowe słowa?

  5. Połącz wiele wierszy wyników z jednej kolumny w jedną, pogrupuj według innej kolumny