我正在尝试在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”。我做错了什么?
答案 0 :(得分:3)
另一个选项,将输出转换为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
答案 1 :(得分: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
这个值,这可能也不可取。