如何在sql查询中的两列串联之间添加更多空间

问题描述 投票:0回答:1

在 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

如何实现这一目标?

plsql oracle11g oracle-sqldeveloper oracle-apex plsqldeveloper
1个回答
0
投票

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;
© www.soinside.com 2019 - 2024. All rights reserved.