Ver Mensaje Individual
  #22 (permalink)  
Antiguo 03/02/2015, 10:46
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Crear consultas para base de datos Mysql

La verdad es que si la meta es esta:
Cita:
La primera sirve para comprobar siuna cadena de caracteres de longitud 8 está compuesta por 4 digitos (las 4 primeras posiciones) y 3 digitos(las 3 ultimas posiciones)
Estás haceindolo muy complciado. Ni siquiera tiene sentido usar ASCII().
Con esto devolvería cero (FALSE) si no cumple, o 1 (TRUE), si cumple con el esquema "9999A999", donde "9" es un digito del 0 al 9, y "A" es una lera cualquiera del abecedario.
Código MySQL:
Ver original
  1. DROP FUNCTION IF EXISTS esMatricula;
  2.  
  3. DELIMITER $$
  4. CREATE FUNCTION esMatricula(cad VARCHAR(8)) returns INT
  5.     DECLARE POS INT DEFAULT 1;
  6.     DECLARE vcad VARCHAR(8);
  7.     SET vcad = UPPER(cad);
  8.     IF INSTR('ABCDEFCGHIJKLMNOPQRSTUVWXYZ', substring(vcad, 5, 1)) = 0 THEN
  9.         RETURN 0;
  10.     END IF;
  11.     SET POS = 1;
  12.     REPEAT
  13.         IF INSTR('1234567890', substring(vcad, POS, 1)) = 0 THEN
  14.             RETURN 0;
  15.         END IF;
  16.         SET POS = POS + 1;
  17.     UNTIL POS > 4 END REPEAT;
  18.     SET POS = 6;
  19.     REPEAT
  20.         IF INSTR('1234567890', substring(vcad, POS, 1)) = 0 THEN
  21.             RETURN 0;
  22.         END IF;
  23.         SET POS = POS + 1;
  24.     UNTIL POS > 8 END REPEAT;
  25.     RETURN 1;
  26. END$$
  27. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)