Re: Existe alguna función similar a DIFFERENCE() y SOUNDEX() de sql server en Postgres?

From: "Yessica Brinkmann" <yessica(dot)brinkmann(at)gmail(dot)com>
To: "Jaime Casanova" <systemguards(at)gmail(dot)com>
Cc: Postgres Español <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Existe alguna función similar a DIFFERENCE() y SOUNDEX() de sql server en Postgres?
Date: 2007-02-06 16:58:26
Message-ID: a3b0d4880702060858t676f5df5nf191ab59c43ac425@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola.
Muchas gracias por ampliar tu respuesta.
La estructura de la tabla utilizada es:
CREATE TABLE marca
(
denominacion varchar(200) NOT NULL,
idclase int2 NOT NULL,
descripcion text,
idtipomarca char(1) NOT NULL,
numregistro int4,
fecharegistro date,
fecharenovacion date,
ultimasolicitud int4,
estado char(1),
titular varchar(120),
docreference int4,
total_doc int4,
CONSTRAINT pk_marca1 PRIMARY KEY (denominacion, idclase)
)

y el query que trato de ejecutar es el siguiente:

SELECT m.denominacion as denominacion_det, m.idclase as
idclase_det, m.numregistro, m.fecharegistro,
c.nombre, s.resolucion, s.numsolicitud , DIFFERENCE(m.denominacion,
m.titular ) as diferencia
FROM marca m LEFT OUTER JOIN solicitud s ON m.ultimaSolicitud =
s.numSolicitud
LEFT OUTER JOIN solicitante c ON s.idSolicitante = c.idSolicitante
WHERE (DIFFERENCE(m.denominacion, m.titular ) > 2
AND m.denominacion != 'xx' )

en el lugar de xx tengo una variable, por lo cual solamente escribí
una constante cualquiera.
El error que obtengo al tratar de ejecutar esta consulta es:
ERROR: function difference(character varying, character varying) does not exist
HINT: No function matches the given name and argument types. You may
need to add explicit type casts.

No sé si la función no existe o los tipos de datos están mal, ya que
los tipos de datos que utilizo para la comparación son de tipo
varchar, y supuse que de este modo debería funcionar la consulta.
También ya probé convirtiendo los argumentos a datos tipo text, ya que
esa es la definición explícita de la función, pero tampoco me
funcionó.
Gracias una vez más.
Yessica.

El 5/02/07, Jaime Casanova <systemguards(at)gmail(dot)com> escribió:
> On 2/5/07, Yessica Brinkmann <yessica(dot)brinkmann(at)gmail(dot)com> wrote:
> > Estuve investigando más y creo que levenshtein es la función que
> > podría usar en vez de DIFFERENCE(), pero mi pregunta es si se puede
> > usar esta función en un query directamente.
> > Gracias.
> > Yessica.
> >
>
> la funcion difference existe en ese modulo asi que en realidad no
> tendrias que mas que hacer que usarla... y si, esas funciones se
> pueden usar en consultas...
>
> nunca he usado estas funciones asi que no se me ocurre una consulta en
> la cual usarla, seria bueno que nos muestre un ejemplo de una de tus
> consultas que las usen...
>
> segun lo que veo en la definicion lo que tienes que hacer es:
>
> a soundex enviarle un texto como parametro y te devolvera otro texto
> (aparentemente tal como esperas es un codigo de 4 caracteres)
>
> CREATE FUNCTION soundex(text) RETURNS text
> AS '$libdir/fuzzystrmatch', 'soundex'
> LANGUAGE C IMMUTABLE STRICT;
>
>
> a difference le pasas dos textos y esperas un entero como parametro,
> me imagino que algo indicando el nivel de diferencia o algo asi...
>
> CREATE FUNCTION difference(text,text) RETURNS int
> AS '$libdir/fuzzystrmatch', 'difference'
> LANGUAGE C IMMUTABLE STRICT;
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Leonel Nunez 2007-02-06 17:08:02 Re: Fw: Cual Instalar ?? 8.2.2 o 8.1.4 en CentOS4.4
Previous Message Alvaro Herrera 2007-02-06 16:55:33 Re: Problema de Semi-replicacion 2