2016-08-01 10 views
0

Ich versuche, eine Textzeichenfolge für die spätere Verwendung in einer halbdynamischen Kreuztabellenfunktion zu erstellen.Erstellen einer Textzeichenfolge wird falsch ausgegeben (postgresql)

Alles ist gut, solange ich nicht das Format verwenden „numeric (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)) 

Der Ausgang ist sehr seltsam. Der Buchstabe "i" mit einer Reihe ersetzt wird.

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

wie erhalte ich eine korrekte Textzeichenfolge mit "numeric (x, x)" als Spaltenformat

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

TIA,

+0

Dies scheint mit dem Jahr in Ihrer Serie verwandt zu sein, wo das i in '\ iyyy-iw \' verwendet wird. Diese I's werden irgendwo ersetzt. –

+0

Ich bin mir nicht sicher. Das Ersetzen des Formats mit "YYYY-MM-DD" macht keinen Unterschied. "http://sqlfiddle.com/#!15/9eecb7db59d16c80417c72d1e1f4fbf1/10331 – sibert

Antwort

3

Schreiben Sie "numeric(10,2)" anstelle von numeric(10,2) in Ihre Formatzeichenfolge.

The fine manual sagt:

Ordinary Text in to_char Vorlagen erlaubt und ausgegeben wird buchstäblich sein wird. Sie können eine Teilzeichenfolge in doppelte Anführungszeichen setzen, um zu erzwingen, dass sie als Literaltext interpretiert wird, selbst wenn sie Musterschlüsselwörter enthält.

+0

Ausgezeichnet. Vielen Dank! – sibert

Verwandte Themen