MANEJO DE CADENAS
Los formatos con el argumento 'longitud' devuelven una subcadena de 'longitud' caracteres desde la 'cadena', comenzando en la 'posición'.
Sintaxis:
substr(Cadena(string),posición,longitud).
Ejemplo:
substr(carnet, 1, 3).
1. Listar los alumnos de carreras diferentes a sistemas ('070', '072', '060').
Sintaxis:
select carnet, nombre from alumno where substr(carnet, 1, 3) not in ('070', '072', '060');
2. Listar los alumnos de tecnología en redes ('072').
Sintaxis:
select carnet, nombre from alumno where substr(carnet, 1, 3) in ('072');
3. Listar los alumnos de sistemas ('070', '072', '060').
Sintaxis:
select carnet, nombre from alumno where substr(carnet, 1, 3) in ('070', '072', '060');
4. Mostrar el total de alumnos que iniciaron el primer semestre del año.
Sintaxis:
select count(*) from alumno where substr(carnet, 6, 1) in ('1');
5. Listar los alumnos que se matricularon en el segundo semestre del año.
Sintaxis:
select * from alumno where substr(carnet, 6, 1) in ('2');
6. ¿Cuántos alumnos se matricularon antes del 2010?
Sintaxis:
select count(carnet) from alumno where substr(carnet, 4, 2) < ('10');
7. ¿Cuántos alumnos no son de tecnología en sistemas?
Sintaxis:
select count(carnet) from alumno where substr(carnet, 1, 2) NOT IN('07');
8. Ordenar a los alumnos por año de matricula.
Sintaxis:
select * from alumno order by substr(carnet, 4, 2);
9. Listar los alumnos que tengan menos de 20 caracteres en su nombre.
Sintaxis:
select nombre from alumno where character_length(nombre) < 20;
10. Listar los alumnos de tecnología que estén matriculados antes del 2007 en el primer semestre.
Sintaxis:
select * from alumno where substr(carnet, 1, 2) in ('07') and substr(carnet, 6, 1) in ('1') and substr(carnet, 4, 2) < ('07');
11. Mostrar el carnet mayor de los alumnos que aparecen en el sistema (sin incluir carrera, año de matricula o semestre, solo los últimos 4 dígitos).
Sintaxis:
select max(substr(carnet, 7, 4)) from alumno;
12. Mostrar el carnet mayor de los alumnos que no son de tecnología (sin incluir carrera, año de matricula o semestre, solo los últimos 4 dígitos).
Sintaxis:
select max(substr(carnet, 7, 4)) from alumno where substr(carnet, 1, 2) not in ('07');
13. Mostrar los carnés que inicien en 088, tienen descuento del 10 % de lo contrario pagan todo el valor de la matricula.
Sintaxis:
select carnet, nombre, if(carnet like '088%' or carnet like '075%', 'tiene 10 % de descuento', 'No tiene descuento') from alumno;

