citext
PostgreSQLの拡張機能で、大文字小文字を区別しないTEXT型を追加する。'Alice' = 'alice'が真になる。標準のテキスト型は区別する。
CREATE EXTENSION citext; CREATE TABLE users (email citext UNIQUE);と書くだけで、あちこちにLOWER(email)を書かなくても、大文字小文字を無視した一意制約が手に入る。用途の定番はメールアドレス、ユーザー名、スラッグだ。比較のたびにUnicode対応の小文字化が走るため、textよりやや遅い。
今ならPostgreSQL 12以降の非決定的照合順序(COLLATE)で、拡張なしに同じ比較ができる。citextは2008年から使われてきた実績があり、ICU照合順序はPostgreSQLの現代的なやり方、という位置づけだ。