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

ORACLE - Chọn Đếm trên Truy vấn con

Bạn có thể kiểm tra từng cột bằng một biểu thức chính quy để xác định xem đó có phải là một số hợp lệ hay không:

SELECT COUNT(1)
FROM   table_of_ranges
WHERE  CASE WHEN REGEXP_LIKE( RangeA, '^-?\d+(\.\d*)?$' )
            THEN TO_NUMBER( RangeA )
            ELSE NULL END
          < 10
AND    REGEXP_LIKE( RangeB, '^-?\d+(\.\d*)?$' );

Một giải pháp thay thế khác là sử dụng một hàm do người dùng xác định:

CREATE OR REPLACE FUNCTION test_Number (
  str VARCHAR2
) RETURN NUMBER DETERMINISTIC
AS
  invalid_number EXCEPTION;
  PRAGMA EXCEPTION_INIT(invalid_number, -6502);
BEGIN
  RETURN TO_NUMBER( str );
EXCEPTION
  WHEN invalid_number THEN
    RETURN NULL;
END test_Number;
/

Sau đó, bạn có thể làm:

SELECT COUNT(*)
FROM   table_of_ranges
WHERE  test_number( RangeA ) <= 10
AND    test_number( RangeB ) IS NOT NULL;


  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ó thể tạo các kiểu đối tượng Cơ sở dữ liệu Oracle bên trong PL / SQL không?

  2. ORA-01950:không có đặc quyền trên vùng bảng 'NGƯỜI DÙNG'

  3. Sao lưu trực tuyến Vs ngoại tuyến

  4. nhận một số giá trị duy nhất mà không cần phân tách các giá trị thuộc cùng một khối giá trị

  5. Trình phân tích cú pháp cho Oracle SQL