2016-08-01 42 views
0

我正在嘗試創建一個文本字符串,以便以後在半動態交叉表函數中使用。創建文本字符串得到錯誤的輸出(postgresql)

一切都很好,只要我不使用格式「數字(X,X)

SELECT concat('sign varchar,',(SELECT string_agg(col,',') 
FROM (SELECT to_char(generate_series('2016-01-01','2016-01-15', interval '1 week'),'\"iyyy-iw\" numeric(10,2)')col)cols)) 

輸出是很奇怪的。字母 「I」 被替換爲數字。

sign varchar,"2015-53" numer5c(10,2),"2016-01" numer6c(10,2),"2016-02" numer6c(10,2) 

如何得到正確的文本字符串 「數字(X,X)」 作爲列格式

Sqlfiddle:http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/10313

TIA,

+0

這似乎與您的系列中的年份有關,其中我在'\「iyyy-iw \」中使用。這些我將被替換的地方。 –

+0

我不確定。用\「YYYY-MM-DD \」替換格式沒有區別。 「http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/10331 – sibert

回答

3

在您的格式字符串中寫入"numeric(10,2)"而不是numeric(10,2)

The fine manual說:

普通的文本中允許to_char模板,將輸出從字面上。您可以將子字符串放在雙引號中,以強制它被解釋爲文字文本,即使它包含模式關鍵字。

+0

非常好,謝謝! – sibert