我想知道是否可以仅使用SQL * Plus格式将行转置为列,而避免使用UNPIVOT。
实际上,我想为此脚本添加一些格式
REM filename query.sql
set heading off
SELECT 'aaaaaaaaaa' A,'bb' B,'ccccc' C,'ddddddd' D from dual;
为了获得此输出
SQL> @query
aaaaaaaaaa
bb
ccccc
ddddddd
SQL>
我想知道是否可以仅使用SQL * Plus格式将行转置为列,而避免使用UNPIVOT。
实际上,我想为此脚本添加一些格式
REM filename query.sql
set heading off
SELECT 'aaaaaaaaaa' A,'bb' B,'ccccc' C,'ddddddd' D from dual;
为了获得此输出
SQL> @query
aaaaaaaaaa
bb
ccccc
ddddddd
SQL>
如果您事先知道要打印的所有值都是两个字符长,那么您可以简单地将linesize
设置为2
:
SQL> set heading off
SQL> set linesize 2
SQL> SELECT 'aa' A,'bb' B,'cc' C,'dd' D from dual;
aa
bb
cc
dd
SQL>
在编辑问题之后,这是一个更通用的解决方案:如果您事先知道字符串值的最大大小,则可以将每一列格式化为最大大小(使用选项column ... format a<n>
) ,并将行大小设置为相同大小,如下所示:
SQL> column A format a50
SQL> column B format a50
SQL> column C format a50
SQL> column D format a50
SQL> set linesize 50
SQL> SELECT 'aaaaaaaaaa' A,'ccccc' C,'ddddddd' D from dual;
aaaaaaaaaa
bb
ccccc
ddddddd
SQL>