Hallo,
die 2. Funktion funktioniert auf Postgres 8.0 aber nicht mehr auf Postgres 9.x.
Folgende Fehlermeldung:
FEHLER: Funktion lpad(text, integer, integer) existiert nicht
LINE 6: LPAD(SUBSTR(COALESCE(SUBSTRING(btrsort_nextunit($…
^
HINT: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
********** Fehler **********
FEHLER: Funktion lpad(text, integer, integer) existiert nicht
SQL Status:42883
Hinweis:Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
Zeichen:214
CREATE OR REPLACE FUNCTION btrsort(text)
RETURNS text AS
‘SELECT btrsort($1, 10);’
LANGUAGE sql VOLATILE;
ALTER FUNCTION btrsort(text)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION btrsort(text, integer)
RETURNS text AS
$BODY$SELECT CASE WHEN $2-1>0
THEN
RPAD(SUBSTR(COALESCE(SUBSTRING($1 FROM ‘^[^0-9]+’), ‘’), 1, 12), 12, ’ ') ||
LPAD(SUBSTR(COALESCE(SUBSTRING(btrsort_nextunit($1) FROM ‘^[0-9]+’), ‘’), 1, 12), 12, 0) || btrsort(btrsort_nextunit(btrsort_nextunit($1)), $2-1)
ELSE
RPAD(SUBSTR(COALESCE(SUBSTRING($1 FROM ‘^[^0-9]+’), ‘’), 1, 12), 12, ’ ') ||
LPAD(SUBSTR(COALESCE(SUBSTRING(btrsort_nextunit($1) FROM ‘^[0-9]+’), ‘’), 1, 12), 12, 0)
END$BODY$
LANGUAGE sql VOLATILE;
ALTER FUNCTION btrsort(text, integer)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION btrsort_nextunit(text)
RETURNS text AS
$BODY$SELECT CASE WHEN $1 ~ ‘[^0-9]+’ THEN
COALESCE( SUBSTR( $1, LENGTH(SUBSTRING($1 FROM ‘[^0-9]+’))+1 ),
‘’ )
ELSE
COALESCE( SUBSTR( $1, LENGTH(SUBSTRING($1 FROM ‘[0-9]+’))+1 ),
‘’ )
END$BODY$
LANGUAGE sql VOLATILE;
ALTER FUNCTION btrsort_nextunit(text)
OWNER TO postgres;
Kann mir jemand helfen, wäre total dankbar.
Gruß Tedt