小编Rob*_*n B的帖子

不区分大小写的排序规则仍然比较区分大小写

目前我正在试图创建一个表,一个文本列将比较案例默认情况下是敏感的。这是因为我们有一个第三方程序可以对我们的数据库执行搜索。该SELECT程序使用的语句不能更改。

抽象的问题是我们不知何故需要这个搜索不区分大小写,但它目前是区分大小写的。

我读到 Postgres 12 确实支持允许这种行为的非确定性排序规则。

我在德国 Windows 机器上安装了 Postgres 服务器(版本 PostgreSQL 12.1,由 Visual C++ build 1914 编译,64 位)。

因此,出于测试目的,我创建了一个新数据库进行测试:

CREATE DATABASE collation_test
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

在这个数据库中,我创建了以下排序规则,我在一篇关于这些排序规则的文章中找到

CREATE COLLATION collat_ci (
  provider = 'icu',
  locale = 'und-u-ks-level2',
  deterministic = false
);
Run Code Online (Sandbox Code Playgroud)

在此之后,我需要一个表来测试这个排序规则

CREATE TABLE public.person
(
    "Id" bigint NOT NULL,
    "Name" text COLLATE public.collat_ci,
    PRIMARY KEY ("Id")
);

ALTER TABLE public.person
    OWNER to postgres;

INSERT …
Run Code Online (Sandbox Code Playgroud)

postgresql collation case-sensitive postgresql-12

8
推荐指数
1
解决办法
1958
查看次数