Procediiento Cuenta letras
Publicado por Junior (1 intervención) el 07/06/2020 12:54:52
Tengo un procedimiento que me cuenta las letras, ahora necesito que me distinga entre mayusculkas y minusculas, la cuestion es que no se si meterlo en otro while, cosa que creo que no aria falta pero no consigo dar con la solucion, completa. este es el procedimiento sin distincion de mayusculas;
Esta parte es para que me distinga entre mayúsculas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
DROP PROCEDURE IF EXISTS P08_NUMERO_VECES_CARACTERv2;
DELIMITER |
CREATE PROCEDURE P08_NUMERO_VECES_CARACTERv2(IN cadena VARCHAR(255), IN caracter CHAR(1),
OUT numero INT, OUT resultado TEXT)
BEGIN
DECLARE posicion INT DEFAULT 1;
DECLARE longitud INT DEFAULT 0;
DECLARE letra CHAR(1) DEFAULT '';
DECLARE numascii INTEGER DEFAULT 0;
DECLARE mayusculas INT DEFAULT 0;
SET numero = 0;
SET resultado = 'La cadena de texto --> ';
SET longitud = CHARACTER_LENGTH(cadena);
SET resultado = CONCAT(resultado,cadena,' tiene: ',longitud,' caracteres\n');
SET resultado = CONCAT(resultado,'\n El caracter --> ',caracter,':');
WHILE posicion < longitud + 1 DO
SET letra = SUBSTRING(cadena,posicion,1);
IF letra LIKE caracter THEN
SET numero = numero + 1;
SET resultado = CONCAT(resultado,'\n - Aparece en la posición ',posición);
END IF;
SET posicion = posicion + 1;
END WHILE;
IF numero = 0 THEN
SET resultado = CONCAT(resultado,'\n\n NO se encuentra en la cadena de texto');
ELSE
SET resultado = CONCAT(resultado,'\n\n Por tanto, aparece ',numero,' vez/veces en el texto: ', cadena);
END IF;
END |
DELIMITER ;
Esta parte es para que me distinga entre mayúsculas
1
2
3
4
5
6
7
8
9
WHILE posicion < (longitud + 1) DO
SET caracter = SUBSTRING(cadena,posicion,1);
SET numascii = ASCII(caracter);
IF numascii > 64 AND numascii < 91 THEN
SET numero = numero + 1;
SET resultado = CONCAT(resultado,'\n - Aparece en la posición ',posición);
END IF;
SET posicion = posicion + 1;
END WHILE;
Valora esta pregunta


0