PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да прехвърля низ към цяло число и да имам 0 в случай на грешка при прехвърлянето с PostgreSQL?

Аз самият просто се борех с подобен проблем, но не исках режийните разходи за функция. Получих следната заявка:

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

Postgres съкращава своите условия, така че не трябва да получавате никакви нецели числа, удрящи вашето ::integer cast. Той също така обработва NULL стойности (те няма да съвпадат с регулярния израз).

Ако искате нули, вместо да не избирате, тогава изразът CASE трябва да работи:

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. Как да сравним две схеми в PostgreSQL

  2. SQLAlchemy, Psycopg2 и Postgresql COPY

  3. Как да анализирам JSON в postgresql

  4. Как да ПРОМЕНЯ PostgreSQL таблица и да направя колона уникална?

  5. Намерете името на хоста и порта с помощта на PSQL команди