1

我正在尝试在 Oracle 中设置连接列的宽度,但我不确定如何完成此操作。

我有这样的事情(简化):

SELECT t.first_name || ' ' || t.family_name "Trainer name"
FROM trainer t

输出如下所示:

Trainer name                       
------------------------------------
Bill Gates                        
Steve Jobs                           
Isaac Asimov

我正在尝试将列宽限制为 18 个字符。我试图使用 COLUMN

COLUMN t.first_name || ' ' || t.family_name FORMAT A18

但这行不通。文档说:“如果您在 COLUMN 命令中使用表达式,则必须完全按照 SELECT 命令中的形式输入 expr”。我究竟做错了什么?

4

2 回答 2

4

另一种选择,将输出转换为 char(18):

http://sqlfiddle.com/#!4/69410/1

SELECT 
    cast(t.first_name || ' ' || t.family_name as char(18))   as "Trainer name"
FROM trainer t
于 2013-04-12T15:10:04.367 回答
1

您已经为该列添加了别名,因此您必须在column命令中使用别名:

COLUMN "Trainer name" FORMAT A18

SELECT t.first_name || ' ' || t.family_name "Trainer name"
FROM trainer t;

Trainer name
------------------
Bill Gates
Steve Jobs
Isaac Asimov

您可能会发现使用更简单的别名和列标题会更简洁,将功能与显示分开 - 在某种程度上:

CLEAR COLUMNS
COLUMN trainer_name FORMAT A18 HEADING "Trainer name"

SELECT t.first_name || ' ' || t.family_name AS trainer_name
FROM trainer t;

Trainer name
------------------
Bill Gates
Steve Jobs
Isaac Asimov

无论哪种方式,如果连接的值超过 18 个字符,则该值将换行到第二行。为避免这种情况,您必须获得substr价值,这也可能是不可取的。

于 2013-04-12T15:03:27.933 回答