在 SQL 中自定义 ORDER BY

Customize ORDER BY in SQL

我有这样的客户名称数据:

column_name : Insan, Ir. Cahya, Drs. Setia

我怎么办ORDER BY但标题(学历)不包括在内?

我的预期输出(升序):

**Cahya, Ir. Insan, Drs. Setia**

注意:IrDrs 是印度尼西亚的教育名称

您可以在 ORDER BY 中包含一个子查询并在那里过滤标题。

在我的解决方案中,只会过滤您示例中的 2 个标题。我很确定,这不是最好的解决方案,但它会起作用。

select name
from testtable a
order by (select case
                     when name like 'Ir. %' then substr(name, 5)
                     else
                         case
                             when name like 'Drs. %' then substr(name, 5)
                             else name
                             end
                     end as name
          from testtable t
          where a.id = t.id);

我在 Postgres 上使用以下测试设置对此进行了测试:

create table testtable
(
    id bigint,
    name varchar(2000)
);

insert into testtable
values (1, 'Insan, Ir.'),
       (2, 'Cahya'),
       (3, 'Drs. Setia');