Informix - Función MATCHES

 
Vista:

Función MATCHES

Publicado por Cecilia (8 intervenciones) el 20/03/2006 16:52:59
Hola..buenas tardes:

Necesito saber cómo se utiliza la funciòn MATCHES con una variable. Tengo el siguiente store procedure:

CREATE PROCEDURE sp_rem_fact_conc(nro_externo numeric)

SELECT a.tc_int, a.nro_int,b.nro_int nro_int_fac,
b.tc_int tc_int_fac
FROM tmp_remitos a, comentario_comp b
WHERE (b.tc_int = 400) AND (comentario MATCHES nro_externo)

...

END PROCEDURE;

...esto tal como está no devuelve ningún registro.

Desde ya muchísimas gracias.!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Función MATCHES

Publicado por luisrivaldo (126 intervenciones) el 21/03/2006 14:03:00
Hola MATCHES es usada para hacer comparaciones entre campo de tipo alfanumerico y/o texto.
Debes tener en cuenta que los dos campos deben ser del mismo tipo
texto o alfanumerico y en lo posible que tengan la misma longitud .
Aunque con longitud diferente siendo texto o alfanumerico funciona pero debes tener cuidado de lo que esperas.

puedes usar los comodines como ( % , ?, *) etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Función MATCHES

Publicado por Cecilia (8 intervenciones) el 21/03/2006 14:47:33
Hola, gracias por responder.

En el ejemplo que puse el argumento del storedprocedure es numeric, fue un error mio. Lo corregí, el argumento es NRO_EXTERNO CHAR(50), igual que el campo comentario, pero sigue sin funcionar, no evalúa el contenido del argumento.

No sé si hay que anteponerle algún caracter a la variable...o se tendrá que utilizar solamente con valores fijos como "%Juan" ????.......

Gracias de nuevo,

Cecilia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Función MATCHES

Publicado por abr (18 intervenciones) el 21/03/2006 16:58:40
Hola Cecilia te recomiendo que utilices la funcion LIKE en vez de MATCHES, harás tu procedimiento mas compatible con otras Bases de Datos.

prueba a utilizar :

CREATE PROCEDURE sp_rem_fact_conc(nro_externo numeric)

SELECT a.tc_int, a.nro_int,b.nro_int nro_int_fac,
b.tc_int tc_int_fac
FROM tmp_remitos a, comentario_comp b
WHERE (b.tc_int = 400) AND (comentario LIKE TRIM(nro_externo) || '%')

Con el trim elimino los blancos a cola de la variable y despues le concateno el '%'
Suerte desde Alicante (España)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Función MATCHES

Publicado por Cecilia (8 intervenciones) el 21/03/2006 19:18:26
Probé hacerlo de esa manera y funcionó, lo único que cambié fue declarar el parámetro como CHAR(5). Quedó así:

CREATE PROCEDURE sp_rem_fact_conc(nro_externo char(5))

SELECT a.tc_int, a.nro_int,b.nro_int nro_int_fac,
b.tc_int tc_int_fac
FROM tmp_remitos a, comentario_comp b
WHERE (b.tc_int = 400) AND (comentario LIKE '%'|| nro_externo ||'%')

....

END PROCEDURE;

Muchas Gracias desde Hughes(Argentina)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar