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

CHỌN phân biệt chữ hoa chữ thường PostgreSQL trên mảng

Một giải pháp thay thế không được đề cập là cài đặt citext phần mở rộng đi kèm với PostgreSQL 8.4+ và sử dụng một mảng citext :

regress=# CREATE EXTENSION citext;
regress=# SELECT 'foo' = ANY( '{"Foo","bar","bAz"}'::citext[] );
 ?column? 
----------
 t
(1 row)

Nếu bạn muốn hoàn toàn chính xác về điều này và tránh các tiện ích mở rộng, bạn phải thực hiện một số truy vấn con khá xấu bởi vì Pg không có nhiều hoạt động mảng phong phú, đặc biệt là không có hoạt động ánh xạ chức năng. Một cái gì đó như:

SELECT array_agg(lower(($1)[n])) FROM generate_subscripts($1,1) n;

... trong đó $ 1 là tham số mảng. Trong trường hợp của bạn, tôi nghĩ bạn có thể gian lận một chút vì bạn không quan tâm đến việc bảo toàn thứ tự của mảng, vì vậy bạn có thể làm một số việc như:

SELECT 'foo' IN (SELECT lower(x) FROM unnest('{"Foo","bar","bAz"}'::text[]) x);


  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 bảng với tên biến trong PostgreSQL không?

  2. String_agg cho nhiều cột

  3. Sử dụng Dapper và Postgresql - kiểu dữ liệu citext

  4. Làm cách nào để cập nhật các hàng đã chọn với các giá trị từ tệp CSV trong Postgres?

  5. Thực hiện truy vấn hàng giờ hoạt động này trong PostgreSQL