PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để truyền một chuỗi thành số nguyên và có 0 trong trường hợp truyền lỗi với PostgreSQL?

Tôi chỉ đang vật lộn với một vấn đề tương tự bản thân mình, nhưng không muốn chi phí cho một chức năng. Tôi đã nghĩ ra truy vấn sau:

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

Postgres viết tắt các điều kiện của nó, vì vậy bạn sẽ không nhận được bất kỳ số không phải số nguyên nào đánh vào ::số nguyên của bạn. Nó cũng xử lý các giá trị NULL (chúng sẽ không khớp với regexp).

Nếu bạn muốn các số không thay vì không chọn, thì câu lệnh CASE sẽ hoạt động:

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. Cách đặt lại trình tự cho ID trên bảng PostgreSQL

  2. ST_DWithin nhận tham số là độ, không phải mét, tại sao?

  3. rake db:tạo cơ sở dữ liệu ném không tồn tại lỗi với postgresql

  4. Chức năng cửa sổ Postgres và nhóm theo ngoại lệ

  5. Sửa bảng TOAST bị hỏng