X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 0248D52A72 for ; Thu, 18 Aug 2005 11:25:50 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 11787-07 for ; Thu, 18 Aug 2005 14:25:46 +0000 (GMT) Received: from web52714.mail.yahoo.com (web52714.mail.yahoo.com [206.190.48.237]) by svr1.postgresql.org (Postfix) with SMTP id 69C605298D for ; Thu, 18 Aug 2005 11:25:44 -0300 (ADT) Received: (qmail 48391 invoked by uid 60001); 18 Aug 2005 14:25:48 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.br; h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=VqqQNuJFhVpZ5qUghpp5xraxPZpWzDETVU5XQRUKs8VBYoqiufELgduRVXjfiafioxTZdihvt1niVxWwd9Yf9PqI238ruae5y5MZ6GvqshaHzL/MOMkqH9ziHiEvJpn3VqiLfBWAnU+PHl2/oprtiZZjeCtBi7QaQQFZUPAfqJQ= ; Message-ID: <20050818142548.48389.qmail@web52714.mail.yahoo.com> Received: from [201.8.19.247] by web52714.mail.yahoo.com via HTTP; Thu, 18 Aug 2005 14:25:48 GMT Date: Thu, 18 Aug 2005 14:25:48 +0000 (GMT) From: Halley Pacheco de Oliveira Subject: Re: [despammed] converting varchar to integer To: pgsql-sql@postgresql.org MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.483 required=5 tests=[AWL=-0.098, DNS_FROM_RFC_ABUSE=0.374, UPPERCASE_25_50=0.207] X-Spam-Level: X-Archive-Number: 200508/140 X-Sequence-Number: 22368 A function to check for valid integers: CREATE OR REPLACE FUNCTION retInt(VARCHAR) RETURNS integer AS ' DECLARE number ALIAS FOR $1; i INTEGER := 1; BEGIN IF ((number IS NULL) OR (number = '''')) THEN RETURN NULL; END IF; WHILE (i <= length(number)) LOOP IF ((substr(number,i,1) < ''0'') OR (substr(number,i,1)) > ''9'') THEN RETURN NULL; END IF; i := i + 1; END LOOP; RETURN to_number(number,''999999999999990''); END; ' LANGUAGE plpgsql; \pset null (NULL) DROP TABLE test; CREATE TABLE test (number VARCHAR); INSERT INTO test VALUES('123'); INSERT INTO test VALUES('a123'); INSERT INTO test VALUES('123b'); INSERT INTO test VALUES(''); SELECT retInt(number) FROM test; retint -------- 123 (NULL) (NULL) (NULL) (4 lines) _______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/