在 Apex 选择列表中,我的列与 2 个值连接,如 ,
我的查询是
SELECT DISTINCT (COUNTRY_DESC || ' ' || COUNTRY_ID) d , COUNTRY_ID r FROM 发件人地址;
输出是:
India IN
United kingdom UK
United states US
但是她我想要如下的输出,输出应该与空间对齐,如下所示,如何实现这一点
预期输出:
India IN
United kingdom UK
United states US
如何实现这一目标?
RPAD
可以添加可变数量的空格以帮助创建对齐。最简单的方法是猜测合适的最大尺寸,例如 20:
SELECT RPAD(COUNTRY_DESC, 20) || COUNTRY_ID d , COUNTRY_ID r FROM ADDRESS ;
D R
---------------------- --
India IN IN
United kingdom UK UK
United states US US
如果您想要最小可能的填充,可以使用分析函数。
SELECT RPAD(COUNTRY_DESC, 1 + MAX(LENGTH(COUNTRY_DESC)) OVER ()) || COUNTRY_ID d , COUNTRY_ID r
FROM ADDRESS ;
D R
----------------- --
India IN IN
United kingdom UK UK
United states US US
我建议不要使用 CHAR 数据类型来创建默认填充。这种填充浪费了一些空间,并且还会导致一些意外的表达行为。 CHAR 数据类型的整个概念有点违背数据库的基本原理,我敢打赌 Oracle 会后悔引入它。一列应该只存储一个原子事物。不是“一个东西加上一些格式”。
这是我用于测试查询的架构:
create table address as
select 'India' country_desc, 'IN' country_id from dual union all
select 'United kingdom' country_desc, 'UK' country_id from dual union all
select 'United states' country_desc, 'US' country_id from dual;