PDA

Ver la Versión Completa : Buscar valores con longitud 5 en una consulta


jafera
03-06-2014, 12:10:44
Buenas a todos.

Os explico mi inquietud, he mirado en la web de firebird y no veo solución por lo que no se si es posible realizar esta operación:

Select * from tabla where codigo >='00.00' and codigo <= '99.99' and longitud de este campo (codigo) = 5

Porque esto?, pues porque el campo tiene una longitud de 7 caracteres varchar y puede tener unos valores como 0.00.00 o 1.21.34 y si realizo la consulta sin limitar la longitud del campo me los enseña todos y precisamente es lo que quiero evitar

Como siempre gracias de antemano.

Saludos

Josep

Casimiro Notevi
03-06-2014, 12:24:07
http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-char_length.html

jafera
03-06-2014, 12:29:29
Gracias Antonio

Esto es para FB a partir de 2.0 y yo estoy anclado en 1.5 por motivos que ahora no vienen al caso.

Pero mirando estas funciones me devolveran la longitud de una cadena 'xxxx' pero no me filtrará los valores de la tabla cuya longitud sea 5, o por lo menos lo interpreto así.

No se igual estoy equivocado.

Saludos

Josep

ecfisa
03-06-2014, 18:07:59
Hola Josep.

Para la versión 1.5 podrías crearte un procedimiento que te devuelva la longitud de la cadena:

SET TERM ^;

CREATE PROCEDURE LENSTR (PARAMSTR VARCHAR(255))
RETURNS (LEN INTEGER) AS
DECLARE VARIABLE AUX VARCHAR(255);
BEGIN
AUX = '';
LEN = 0;
WHILE (NOT PARAMSTR LIKE AUX) DO
BEGIN
AUX = AUX || '_';
LEN = LEN + 1;
END
SUSPEND;
END^

SET TERM ;^


Ejemplo de uso:

SELECT *
FROM TABLA
WHERE (SELECT LEN FROM LENSTR(CAMPO)) = 5


Saludos :)

jafera
03-06-2014, 23:23:37
Buenas noches.

Ante todo Daniel (Ecfisa), MUUUUUCHAAAAASSSS GRACIAS. ^\||/^\||/#:-)##:-)##:-)##:-)##:-)##:-)##:-)#

Si estuviera en tu pais correria a felicitarte y abrazarte, has dado de lleno en la solución del problema.
Este Stored Procedure realiza exactamente lo que quiero, y la consulta de lanzamiento la he modificado un poco para ajustarla a mis necesidades y como colofón da el resultado esperado.

Repito, muchisimas gracias pues sois geniales, nos abris los ojos que a veces los tenemos empañados y no vemos más allá de las narices.

Saludos

Josep