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 文字を超える場合、値は 2 行目に折り返されます。それを避けるにはsubstr、値を設定する必要がありますが、これも望ましくない場合があります。

于 2013-04-12T15:03:27.933 に答える