X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (neptune.hub.org [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id D3425D1E21C for ; Sat, 29 Nov 2003 17:51:41 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 34945-10 for ; Sat, 29 Nov 2003 13:51:16 -0400 (AST) Received: from biglumber.com (biglumber.com [207.228.252.42]) by svr1.postgresql.org (Postfix) with SMTP id A81B9D1E216 for ; Sat, 29 Nov 2003 13:51:04 -0400 (AST) Received: (qmail 4145 invoked from network); 29 Nov 2003 17:51:10 -0000 Received: from unknown (HELO localhost) (207.228.252.42) by 0 with SMTP; 29 Nov 2003 17:51:10 -0000 From: greg@turnstep.com To: pgsql-sql@postgresql.org Cc: sgnerd@yahoo.com.sg Cc: sgnerd@yahoo.com.sg Subject: Re: Equivalent of Reverse() functions X-PGP-Key: 2529 DF6A B8F7 9407 E944 45B4 BC9B 9067 1496 4AC8 X-Request-PGP: http://www.biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8 In-Reply-To: <00cb01c3b4b2$c23d9520$7502a8c0@hdsc.com> Date: Sat, 29 Nov 2003 17:51:10 -0000 X-Mailer: JoyMail 1.38 Message-ID: X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200311/344 X-Sequence-Number: 16159 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > I am migrating an SQL Server 2000 database to Postgres 7.3.4 running > on RH Linux 7.2. While migrating I encounter SQL Server REVERSE( ) > function, seems no such functions at Postgres. > > Is there a equivalent function available at Postgres? Please > shed some light No. If you have plperl installed, as somebody already posted, you can take advantage of perl's built in reverse() function. Here is a plpgsql version: CREATE OR REPLACE FUNCTION reverse(TEXT) RETURNS TEXT AS ' DECLARE original ALIAS FOR $1; reversed TEXT := \'\'; onechar VARCHAR; mypos INTEGER; BEGIN SELECT LENGTH(original) INTO mypos; LOOP EXIT WHEN mypos < 1; SELECT substring(original FROM mypos FOR 1) INTO onechar; reversed := reversed || onechar; mypos := mypos -1; END LOOP; RETURN reversed; END ' LANGUAGE plpgsql IMMUTABLE RETURNS NULL ON NULL INPUT; pg=> SELECT reverse('A man, a plan, a canal, Panama'); reverse - -------------------------------- amanap ,lanac a ,nalp a ,nam A - -- Greg Sabino Mullane greg@turnstep.com PGP Key: 0x14964AC8 200311291246 -----BEGIN PGP SIGNATURE----- iD8DBQE/yNwwvJuQZxSWSsgRAnTyAJ9TqV0D3pV4Cv2b0VZfb8TxuvgxKgCeNBN+ OoFWwoD3omlLw+MUxcWZkT0= =JtRf -----END PGP SIGNATURE-----