15 Şubat 2021 Pazartesi

CREATE COLLATION

Giriş
Kendi Collation nesnemizi yaratmak için kullanılır. 

Örnek
Mevcut collation nesnelerini kullanmak için şöyle yaparız.
SELECT label FROM personal.storage_disks ORDER BY label ASC;
SELECT label FROM personal.storage_disks ORDER BY label COLLATE "C" ASC;
SELECT label FROM personal.storage_disks ORDER BY label COLLATE "POSIX" ASC;
SELECT label FROM personal.storage_disks ORDER BY label COLLATE "default" ASC;
Örnek
Şöyle yaparız
CREATE COLLATION numeric (provider = icu, locale = 'en-u-kn-true');
Örnek - Case Insensitive Unique Index
Açıklaması şöyle
Postgres is case sensitive. Use the following case_insensitive collation to assist with case-insensitive operations.

To perform case-insensitive uniqueness enforcement for a particular column, specify COLLATE case_insensitive after the column name.
Şöyle yaparız
/* See https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERMINISTIC */
CREATE COLLATION case_insensitive
(provider = icu, locale='und-u-ks-level2', deterministic=false);
Sonra şöyle yaparız
CREATE UNIQUE INDEX users_email_unique ON users(email COLLATE case_insensitive);
İndeks'in kullanıldığını görmek için şöyle yaparız
EXPLAIN
SELECT * FROM users
WHERE lower(email) = lower('Seed-system-user')
AND deleted_at IS NULL;
Çıktı şöyle olmalı
-> Bitmap Index Scan on users_email_unique

Hiç yorum yok:

Yorum Gönder