Sesion10 - Operadores de Cadena y Comparacion

Descargar como rtf, pdf o txt
Descargar como rtf, pdf o txt
Está en la página 1de 6

COMPUTACIÓN E INFORMÁTICA

SESIÓN 10:

FUNCIONES DE CADENA Y COMPARACION-SQL

BETWEEN.- Para indicar que deseamos recuperar los registros según el intervalo de valores de un
campo emplearemos el operador Between cuya sintaxis es: 

    campo [Not] Between valor1 And valor2

También puede utilizarse en rango de fechas.

LIKE Y NOT LIKE

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.

Imaginemos que tenemos registrados estos 2 libros:


"El Aleph", "Borges";
"Antologia poetica", "J.L. Borges";
Si queremos recuperar todos los libros de "Borges" y especificamos la siguiente condición:
select * from libros
where autor='Borges';
sólo aparecerá el primer registro, ya que la cadena "Borges" no es igual a la cadena "J.L. Borges".

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.

Para seleccionar todos los libros que comiencen con "M":


select * from libros
    where titulo like 'M%';
COMPUTACIÓN E INFORMÁTICA

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 todos los libros que NO comiencen con "M":


select * from libros
    where titulo not like 'M%';
Así como "%" reemplaza cualquier cantidad de caracteres, el guión bajo "_" reemplaza un caracter, es
otro caracter comodín. Por ejemplo, queremos ver los libros de "Lewis Carroll" pero no recordamos si
se escribe "Carroll" o "Carrolt", entonces tipeamos esta condición:
select * from libros
    where autor like "%Carrol_";
Otro caracter comodín es [] reemplaza cualquier carácter contenido en el conjunto especificado dentro
de los corchetes.

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

... like '%[%]%': busca cadenas que contengan el signo '%';


... like '%[_]%': busca cadenas que contengan el signo '_';
... like '%[[]%': busca cadenas que contengan el signo '[';

Microsoft SQL Server tiene algunas funciones para trabajar con cadenas de caracteres. Aquí les
mencionamos:

substring(cadena,inicio,longitud): devuelve una parte de la cadena especificada como primer


argumento, empezando desde la posición especificada por el segundo argumento y de tantos
caracteres de longitud como indica el tercer argumento. Ejemplo:
select substring('El Caminante chimbotano',8,6);
retorna "ante c".

str(numero,longitud,cantidaddecimales): convierte números a caracteres; el primer parámetro indica el


valor numérico a convertir, el segundo la longitud del resultado (debe ser mayor o igual a la parte
entera del número más el signo si lo tuviese) y el tercero, la cantidad de decimales. El segundo y tercer
argumento son opcionales y deben ser positivos. String significa cadena en inglés.

Ejemplo: se convierte el valor numérico "123.456" a cadena, especificando 7 de longitud y 3 decimales:


select str(123.456,7,3);

select str(-123.456,7,3);
retorna '-123.46';

Si no se colocan el segundo y tercer argumento, la longitud predeterminada es 10 y la cantidad de


decimales 0 y se redondea a entero. Ejemplo: se convierte el valor numérico "123.456" a cadena:
select str(123.456);
retorna '123';
select str(123.456,3);
retorna '123';

Si el segundo parámetro es menor a la parte entera del número, devuelve asteriscos (*). Ejemplo: select
str(123.456,2,3);

retorna "**".

stuff(cadena1,inicio,cantidad,cadena2): inserta la cadena enviada como cuarto argumento, en la


posición indicada en el segundo argumento, reemplazando la cantidad de caracteres indicada por el
tercer argumento en la cadena que es primer parámetro. Stuff significa rellenar en inglés. Ejemplo:
select stuff('abcde',3,2,'opqrs');
COMPUTACIÓN E INFORMÁTICA

retorna "abopqrse". Es decir, coloca en la posición 2 la cadena "opqrs" y reemplaza 2 caracteres de la


primer cadena.

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".

left(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la


izquierda, primer caracter. Ejemplo:
select left('buenos dias',8);
retorna "buenos d".

right(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena comenzando desde la


derecha, último caracter. Ejemplo:
select right('buenos dias',8);
retorna "nos dias".

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".

upper(cadena): retornan la cadena con todos los caracteres en mayúsculas. Ejemplo:


select upper('HOLA ESTUDIAnte');
ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa recortar.
Ejemplo:
select ltrim('          Hola          ');
retorna "Hola ".

rtrim(cadena): retorna la cadena con los espacios de la derecha eliminados. Ejemplo:


select rtrim('      Hola      ');
retorna " Hola".
COMPUTACIÓN E INFORMÁTICA

replace(cadena,cadenareemplazo,cadenareemplazar): retorna la cadena con todas las ocurrencias de la


subcadena reemplazo por la subcadena a reemplazar. Ejemplo:
select replace('xxx.sqlserverya.com','x','w');
retorna "www.sqlserverya.com'.

-reverse(cadena): devuelve la cadena invirtiendo el order de los caracteres. Ejemplo:


select reverse('Hola');
retorna "aloH".

patindex(patron,cadena): devuelve la posición de comienzo (de la primera ocurrencia) del patrón


especificado en la cadena enviada como segundo argumento. Si no la encuentra retorna 0. Ejemplos:
select patindex('%Luis%', 'Jorge Luis Borges');
retorna 7.
select patindex('%or%', 'Jorge Luis Borges');
retorna 2.
select patindex('%ar%', 'Jorge Luis Borges');
retorna 0.

charindex(subcadena,cadena,inicio): devuelve la posición donde comienza la subcadena en la cadena,


comenzando la búsqueda desde la posición indicada por "inicio". Si el tercer argumento no se coloca, la
búsqueda se inicia desde 0. Si no la encuentra, retorna 0. Ejemplos:
select charindex('or','Jorge Luis Borges',5);
retorna 13.
select charindex('or','Jorge Luis Borges');
retorna 2.
select charindex('or','Jorge Luis Borges',14);
retorna 0.
select charindex('or', 'Jorge Luis Borges');
retorna 0.

replicate(cadena,cantidad): repite una cadena la cantidad de veces especificada. Ejemplo:


select replicate ('Hola',3);
retorna "HolaHolaHola";

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.

También podría gustarte