2016-08-01 59 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