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

Postgres - Hàm trả về giao điểm của 2 ĐƯỜNG LÊN?

Kể từ 8.4, có những nội trang hữu ích trong Postgres làm cho hàm từ câu trả lời đầu tiên dễ dàng hơn và có thể nhanh hơn (dù sao thì đó là những gì EXPLAIN nói với tôi:"(cost =0.00..0.07 row =1 width =64)" cho truy vấn này vs . "(chi phí =0,00..60,02 hàng =1 chiều rộng =64)" đối với hàng gốc).

Mã đơn giản là:

SELECT ARRAY
    (
        SELECT UNNEST(a1)
        INTERSECT
        SELECT UNNEST(a2)
    )
FROM  (
        SELECT  array['two', 'four', 'six'] AS a1
              , array['four', 'six', 'eight'] AS a2
      ) q;

và vâng, bạn có thể biến nó thành một hàm:

CREATE FUNCTION array_intersect(anyarray, anyarray)
  RETURNS anyarray
  language sql
as $FUNCTION$
    SELECT ARRAY(
        SELECT UNNEST($1)
        INTERSECT
        SELECT UNNEST($2)
    );
$FUNCTION$;

mà bạn có thể gọi là

SELECT array_intersect(array['two', 'four', 'six']
                     , array['four', 'six', 'eight']);

Nhưng bạn cũng có thể gọi nó là nội tuyến:

 SELECT array(select unnest(array['two', 'four', 'six']) intersect
              select unnest(array['four', 'six', 'eight']));


  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 nhóm theo tháng trong PostgreSQL

  2. Django số lượng lớn_create với các hàng bỏ qua gây ra lỗi IntegrityError?

  3. Làm cách nào để sử dụng vùng chứa PostgreSQL với dữ liệu hiện có?

  4. psycopg2 rò rỉ bộ nhớ sau khi truy vấn lớn

  5. Tổng quan về các tiện ích mở rộng đáng tin cậy trong PostgreSQL 13