嗨,Postgresql专家,
与order by
postgresql保持联系,因为数据在pgAdmin中是如此敏感地粘贴了图像。
正如您在图像中看到的那样,“ Les”排在第一位,“ L”排在第一位。来了。其实是“ L” 应该首先出现,然后是“ Les”。“L。” 也分成几列,但未排序。那么,为什么会这样呢?
这是表(名称列)的定义:
CREATE TABLE public.res_partner ( id integer NOT NULL DEFAULT nextval('res_partner_id_seq'::regclass), name character varying, ..... .....
这是为此表的“名称”列创建的索引。
CREATE INDEX res_partner_name_index ON public.res_partner USING btree (name COLLATE pg_catalog."default");
预先感谢您的帮助!
PostgreSQL使用操作系统中的库来支持本地语言。当您使用ORDER BY
不带COLLATE
子句的子句时,Postgres将使用默认排序规则-您可以通过command显示它SHOW lc_collate
。索引对于ORDER BY
子句的加速很重要。它不会影响订购。某些语言环境可以使用与您预期不同的顺序。
您可以查看结果:
SELECT datname, datcollate FROM pg_database;
如果期望使用不同的语言环境,则a)COLLATE clause
在之后使用ORDER BY
,b)通过转储/装入使用不同的语言环境重新创建数据库。