在 SQL 中自定义 ORDER BY
Customize ORDER BY in SQL
我有这样的客户名称数据:
column_name : Insan, Ir. Cahya, Drs. Setia
我怎么办ORDER BY
但标题(学历)不包括在内?
我的预期输出(升序):
**Cahya, Ir. Insan, Drs. Setia**
注意:Ir
和 Drs
是印度尼西亚的教育名称
您可以在 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');
我有这样的客户名称数据:
column_name : Insan, Ir. Cahya, Drs. Setia
我怎么办ORDER BY
但标题(学历)不包括在内?
我的预期输出(升序):
**Cahya, Ir. Insan, Drs. Setia**
注意:Ir
和 Drs
是印度尼西亚的教育名称
您可以在 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');