2012-10-04 43 views
1

我想對某些變量使用concat。這些變量已被聲明爲字符:使用concat並保持變量的長度

declare v_order_date char(10); 
declare v_quantity char(11); 
declare v_plant char(100); 

我有一個光標,我將這些設置爲某些輸出。要調用的結果,我設置v_msg作爲

set v_msg := concat(v_msg, '\n', v_order_date, v_quantity, v_plant); 

但是,我得到的結果,當我選擇v_msg是:

2012-01-222501008 Creeping Buttercup 

,但我想保持在聲明的變量的長度我選擇看起來像這樣

2012-01-22 250 1008 Creeping Buttercup 

有什麼建議嗎?謝謝。

+0

不要混淆最大列長度爲某種「變長」。您想要在連接之前將每個值填充到最大列長度。在使用'printf'的語言中,您可以使用「簡單」格式說明符來執行此操作;我不確定用SQL來做到這一點的慣用方式。 –

回答

0

使用MySQL repeat()char_length()

set v_msg := concat(v_msg, '\n', v_order_date, repeat(' ', 10-char_length(v_order_date)), '\n', v_quantity, repeat(' ', 11-char_length(v_quantity)), '\n' , v_plant);