Sesion10 - Operadores de Cadena y Comparacion
Sesion10 - Operadores de Cadena y Comparacion
Sesion10 - Operadores de Cadena y Comparacion
SESIÓN 10:
BETWEEN.- Para indicar que deseamos recuperar los registros según el intervalo de valores de un
campo emplearemos el operador Between cuya sintaxis es:
Existe un operador relacional que se usa para realizar comparaciones exclusivamente de cadenas, "like"
y "not like".
Hemos realizado consultas utilizando operadores relacionales para comparar cadenas. Por ejemplo,
sabemos recuperar los libros cuyo autor sea igual a la cadena "Borges":
select *from libros
where autor='Borges';
El operador igual ("=") nos permite comparar cadenas de caracteres, pero al realizar la comparación,
busca coincidencias de cadenas completas, realiza una búsqueda exacta.
Esto sucede porque el operador "=" (igual), también el operador "<>" (distinto) comparan cadenas de
caracteres completas. Para comparar porciones de cadenas utilizamos los operadores "like" y "not like".
Entonces, podemos comparar trozos de cadenas de caracteres para realizar consultas. Para recuperar
todos los registros cuyo autor contenga la cadena "Borges" debemos tipear:
select * from libros
where autor like "%Borges%";
El símbolo "%" (porcentaje) reemplaza cualquier cantidad de caracteres (incluyendo ningún caracter).
Es un caracter comodín. "like" y "not like" son operadores de comparación que señalan igualdad o
diferencia.
Note que el símbolo "%" ya no está al comienzo, con esto indicamos que el título debe tener como
primera letra la "M" y luego, cualquier cantidad de caracteres.
Para seleccionar los libros cuya editorial comienza con las letras entre la "P" y la "S" usamos la siguiente
sintaxis:
select titulo,autor,editorial
from libros
where editorial like '[P-S]%';
Ejemplos:
... like '[a-cf-i]%': busca cadenas que comiencen con a,b,c,f,g,h o i;
... like '[-acfi]%': busca cadenas que comiencen con -,a,c,f o i;
... like 'A[_]9%': busca cadenas que comiencen con 'A_9';
... like 'A[nm]%': busca cadenas que comiencen con 'An' o 'Am'.
El cuarto caracter comodín es [^] reemplaza cualquier caracter NO presente en el conjunto especificado
dentro de los corchetes.
Para seleccionar los libros cuya editorial NO comienza con las letras "P" ni "N" tipeamos:
select titulo,autor,editorial
from libros
where editorial like '[^PN]%';
"like" se emplea con tipos de datos char, nchar, varchar, nvarchar o datetime. Si empleamos "like" con
tipos de datos que no son caracteres, SQL Server convierte (si es posible) el tipo de dato a caracter. Por
ejemplo, queremos buscar todos los libros cuyo precio se encuentre entre 10.00 y 19.99:
select titulo,precio from libros
where precio like '1_.%';
Queremos los libros que NO incluyen centavos en sus precios:
select titulo,precio from libros
where precio like '%.00';
Para búsquedas de caracteres comodines como literales, debe incluirlo dentro de corchetes, por
ejemplo, si busca:
COMPUTACIÓN E INFORMÁTICA
Microsoft SQL Server tiene algunas funciones para trabajar con cadenas de caracteres. Aquí les
mencionamos:
select str(-123.456,7,3);
retorna '-123.46';
Si el segundo parámetro es menor a la parte entera del número, devuelve asteriscos (*). Ejemplo: select
str(123.456,2,3);
retorna "**".
Los argumentos numéricos deben ser positivos y menor o igual a la longitud de la primera cadena, caso
contrario, retorna "null".
Si el tercer argumento es mayor que la primera cadena, se elimina hasta el primer carácter.
len(cadena): retorna la longitud de la cadena enviada como argumento. "len" viene de length, que
significa longitud en inglés. Ejemplo:
select len('Hola');
devuelve 4.
char(x): retorna un caracter en código ASCII del entero enviado como argumento. Ejemplo:
select char(65);
retorna "A".
lower(cadena): retornan la cadena con todos los caracteres en minúsculas. lower significa reducir en
inglés. Ejemplo:
select lower('HOLA ESTUDIAnte');
retorna "hola estudiante".
space(cantidad): retorna una cadena de espacios de longitud indicada por "cantidad", que debe ser un
valor positivo. Ejemplo:
select 'Hola'+space(1)+'que tal';
retorna "Hola que tal".
COMPUTACIÓN E INFORMÁTICA
Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo
caracter.