Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Buscar valores con longitud 5 en una consulta (https://www.clubdelphi.com/foros/showthread.php?t=85986)

jafera 03-06-2014 12:10:44

Buscar valores con longitud 5 en una consulta
 
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:

Código SQL [-]
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/l...ar_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:
Código SQL [-]
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:
Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 06:10:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi