SQL básico. Funciones sobre cadenas de texto.

En esta sección veremos las funciones que se usan con cadenas de texto más comunes en sentencias SQL. Hay que notar que cada motor de base de datos implementa a veces sus propias funciones y con diferentes nombres. Veremos las más estandarizadas.

Antes de continuar veremos como trabajar directamente con literales, también llamadas constantes, en una sentencia SQL sin recurrir a un campo o columna de una tabla. Escribe y ejecuta el siguiente ejemplo:

Literales en un SELECT.

Como puedes observar, en la sentencia SELECT anterior no usamos ninguna tabla, no especificamos la cláusula FROM, por lo tanto no obtenemos los valores de columnas, si no que los valores los escribimos directamente en la instrucción SELECT. A estos valores escritos directamente se les llama “literales” o “constantes”. Ahora observa los resultados, muestra una sola fila con los valores literales o constantes que escribimos. Las literales texto (TEXT) se encierran entre comillas sencillas mientras que los numéricos se escriben tal cual.

Observa el encabezado de los resultados, los nombres de la columnas son una copia de las literales. Cuando usamos los campos de una tabla, por defecto coloca los nombres de las columnas como hemos visto hasta ahora en todos los ejemplos que hemos hecho. Existe una forma de cambiar el nombre de las columnas en los resultados y es lo que veremos enseguida.

Usando alias en una sentencia SQL.

Un alias es un nombre o apodo que le damos a nuestras columnas o tablas en una sentencia SQL para cambiar el nombre por defecto de estas.

Para columnas o literales usamos la siguiente sintaxis:

expresión AS alias-columna

Para tablas:

nombre-tabla AS alias-tabla

Volvamos a escribir el ejemplo que vimos anteriormente pero ahora asignándole un nombre o alias a las columnas:

Literales en un SELECT con ALIAS.

Observa ahora los encabezados de las columnas de los resultados, aparecen los nombres que le indicamos: texto y numero. Los nombres de los alias pueden contener espacios, pero para ello tenemos que ponerlos entre comillas dobles. Escribe y ejecuta el siguiente ejemplo:

Nombres de alis con espacios.

Observa que el alias “El texto” tiene un espacio, pero para ello lo tuvimos que encerrar entre comillas dobles. Si no lo hiciéramos, al ejecutar la sentencia, marcaría error.

A las columnas de una tabla también le podemos asignar alias. Escribe y ejecuta la siguiente sentencia:

Asignando alias a las columnas de columnas de una tabla.

Observa que a las columnas “id_producto”, “id_marca” e “id_categoria” les asignamos los alias o nombres “producto”, “marca” y “categoria” respectivamente.

Para ejemplificar las funciones vamos a utilizar literales o constantes. Pero las funciones igualmente funcionan con columnas de una tabla.

Funciones SQL sobre cadenas de texto.

Función SQL UPPER().

Convierte la cadena de texto o texto a letras mayúsculas.

Sintaxis: UPPER(expresión-texto)

Recuerda que expresión-texto puede ser una literal o el nombre de una columna de una tabla la cual se quiere convertir a mayúsculas.

Ejecuta la siguiente instrucción y observa el resultado:

Función UPPER().

Función SQL LOWER().

Convierte el texto a minúsculas.

Sintaxis: LOWER(expresión-texto)

Ejecuta el siguiente ejemplo y observa el resultado:

Función LOWER().

Función SQL SUBSTRING().

Extrae una parte del texto.

Sintaxis: SUBSTRING(expresión-texto, a-partir-del-caracter, número-de-caracteres)

Ejecuta el ejemplo y revisa el resultado:

Función SUBSTRING().

En el ejemplo anterior, la función extrae del texto dado una parte de él, a partir del caracter en la posición 1, contando de izquierda a derecha y empezando a contar desde 1, en este caso la letra “p”, y a partir de ahí contando 7 caracteres a la derecha.

Si no se especifica el tercer parámetro de la función es decir, el “número-de-caractares“, entonces extrae “a-partir-del-caracter” y hasta el final del texto. Observa el ejemplo que extrae desde la posición 9 hasta el final del texto:

Función SUBSTRING() sin el tercer parámetro.

Función SQL LENGTH().

Obtiene la longitud (número de caracteres) del texto.

Sintaxis: LENGTH(expresión-texto)

Ejemplo:

Función LENGTH().

Los espacios también cuentan como caracteres.

Función SQL INSTR().

Busca o localiza la primera ocurrencia, de izquierda a derecha, de un texto dentro de otro texto y regresa el número de caracteres anteriores más uno o cero si no encuentra ninguna ocurrencia del texto a buscar.

Sintaxis: INSTR(texto, texto-a-localizar)

Veamos un ejemplo:

Función INSTR().

En el ejemplo, el texto a localizar “ext” se encuentra en la posición 11 del texto “palabra a extraer”. Si el texto a localizar no se encontrara en el texto, la función regresa un cero (0). Ejemplo:

Función INSTR() texto no encontrado.

Función SQL TRIM().

Remueve blancos o los caracteres especificados de ambos lados de un texto y regresa el texto resultante.

Sintaxis: TRIM(texto, caracteres-a-remover)

Si el segundo parámetro, caracteres-a-remover, se omite, se remueve por defecto los caracteres espacio o blancos a ambos lados del texto. Veamos dos ejemplos:

Más adelante en esta sección, veremos más funciones SQL. Espera la actualización de esta entrada.

¡Hasta pronto!

SQL básico. Operadores en la cláusula Where (tercera parte).

En esta sección veremos los operadores lógicos AND, OR y NOT. Los dos primeros sirven para combinar dos o más condiciones en la cláusula WHERE. Hasta el momento sólo hemos usado una sola condición en el WHERE, ahora vamos a ver como combinar más de una con AND y OR.

Operadores Lógicos en SQL.

A veces necesitamos que una consulta cumpla con más de una condición, como por ejemplo que los valores de una columna cumplan una serie de valores o que dos o más columnas cumplan ciertas condiciones. Es ahí donde entran los operadores lógicos.

Operador AND (Y).

Sintaxis: condición AND condición

El operador AND combinará los valores booleanos (verdadero o falso) que regresan las condiciones y regresará a su vez verdadero o falso una vez evaluadas tales condiciones. El operador AND no sólo se limita a combinar dos condiciones, puede combinar más de dos y sólo regresará verdadero cuando todas las condiciones se cumplan o sean verdaderas.

Escribe, ejecuta y analiza los resultados del siguiente ejemplo:

Productos de marca 11.

La sentencia anterior filtra sólo los productos con “id_marca” igual a 11. Observa todos los resultados y verás que esos productos tiene varias “id_categoria”: 3, 618, 583. Si quisiéramos mostrar solamente los productos que pertenecen a la categoría 618 de esa misma marca 11, tendríamos que añadir otra condición. Escribe, ejecuta y analiza los resultados de la siguiente sentencia:

Operador AND (Y).

Como verás ahora son dos condiciones combinadas con el operador AND, recuerda que sólo las filas o registros que cumplan las dos condiciones, es decir que ambas condiciones resulten ciertas o verdaderas, aparecerán en los resultados de salida. Sólo aparecerán los registros que los valores en sus columnas “id_marca” e “id_categoria” sean 11 y 618 respectivamente.

Operador OR (O).

Sintaxis: condición OR condición

Con el operador OR a diferencia del AND, basta conque una de las dos condiciones se cumpla para que de como resultado verdadero. Sólo regresará falso cuando ambas condiciones sean falsas. Escribe la misma sentencia anterior pero reemplazando el operador AND por el operador OR y ve que pasa:

Operador OR (O).

Verás que el filtro ahora arroja más filas que cumplen las condiciones. ¿Sabes por qué? Si observas verás que dentro de los resultados no sólo aparecen productos de la marca 11 ni tampoco sólo categorías con valor de 618. Aparecen todas las filas que tienen valor 11 en su marca o valor 618 en su categoría. ¿Complejo? Imaginemos el proceso que hace SQL, SQL lee una fila y checa la primera condición: ¿la columna “id_marca” tiene valor a 11? Si es verdadero, la manda mostrar a resultados y ya no checa la segunda condición ya que esta usando el operador OR. Con el operador OR basta que una de las condiciones sea verdadera para que la combinación de ambas de como resultado verdadero.

¿Que pasa si la fila en su columna “id_marca” no tiene el valor 11? Bueno, en este caso checa la siguiente condición: ¿”id_categoria” es igual a 618? Si es verdadero, la muestra en los resultados sin importar que la primera condición hay salido falsa. Recuerda, basta que una de las condiciones sea verdadera para que la combinación de ambas sea verdadera. Todas aquellas filas en las que ambas condiciones resulten falsas, no se mostrarán en los resultados.

Revisa los resultados y confirma que todas las filas tienen ya sea el valor 11 en “id_marca” o valor 618 en “id_categoria”. ¿Quedó más claro? Deja tus comentarios.

Operador NOT (NO).

Sintaxis: NOT condición

El operador NOT niega el resultado de la evaluación de una condición o combinación de condiciones. Es decir si el resultado de la condición es verdadera, la torna falsa, y si el resultado de la condición es falsa, la torna verdadera.

Vuelve a ejecutar la primera sentencia SQL que ejecutamos en esta sección donde obteníamos todos los productos con el valor 11 en su columna “id_marca”. Nos dieron como resultado 36 filas. Ahora escribe, ejecuta y analiza los resultados de la siguiente sentencia:

Operador NOT (NO).

Si observas la sentencia, cambiamos el operador “=” (igual) por el operador “<>” (diferente o no igual a) de la condición pero antepusimos el operador NOT (NO) antes de la condición. Primeramente SQL evalúa ¿”id_marca” es diferente a 11? Si es verdadero, es decir, si el valor es cualquier otro valor diferente de 11 la condición se evalúa previamente como verdadera, pero como la condición esta precedida por el operador NOT (NO) entonces cambia el valor resultante a falso y dicha fila no aparecerá en los resultados.

En caso contrario, que “id_marca” de la fila evaluada si sea 11, la condición evaluaría previamente a falsa, pero como va precedida por el operador NOT, entonces la evaluación resultante cambiaría a verdadero y la fila aparecería en los resultados. Puedes dejar un comentario si no te pareció clara la explicación.

En la siguiente sección veremos algunas funciones SQL que podemos usar en la instrucción SELECT.

¡Hasta la próxima!

SQL básico. Operadores en la cláusula Where (segunda parte).

En la sección anterior vimos los operadores de comparación, los siguientes tres que veremos algunos autores los consideran operadores lógicos y otros autores los consideran de comparación: BETWEEN, IN y LIKE.

Operadores Lógicos/De comparación en SQL.

Operador “BETWEEN … AND …” (ENTRE … Y …).

Sintaxis: expresión BETWEEN valor-mínimo AND valor-máximo

Si la “expresión” a comparar es mayor o igual al valor-mínimo y menor o igual al valor-máximo, es decir si está en el rango dado, regresará verdadero, en caso contrario regresará falso. Veamos en la práctica. Escribe, ejecuta y observa los resultados de la siguiente instrucción SELECT:

Operador Between.

Como puedes observar en los resultados, solamente se muestran las filas que cumplan la condición de que el valor de su columna “id_producto” esté entre 14812 y 14816 inclusive. Todas las filas que no estén dentro de este rango, son ignoradas ya que la condición para esas filas evalúa a falso.

Operador “LIKE” (COMO).

Sintaxis: expresión LIKE patrón

Este operador regresará verdadero si la “expresión” coincide con el patrón de búsqueda dado. El patrón es una cadena de caracteres que puede o no contener los caracteres comodines “%” (porcentaje) y “_” (guión bajo).

El “%” (símbolo de porcentaje) dentro del patrón del LIKE, representa o coincide con cualquier secuencia de cero o más caracteres en la cadena.

Un “_” (guión bajo) dentro del patrón del LIKE, representa o coincide con un único caracter en la cadena.

Veámoslo en la práctica. Escribe, ejecuta y analiza los resultados de la siguiente instrucción SQL:

Operador LIKE con comodín %.

La instrucción mostrará todas aquella filas que en su columna “nombre” contengan cualquier secuencia de caracteres o cero caracteres seguida de las letras “red” y que al final tengan cualquier secuencia de caracteres o cero caracteres. Si observas LIKE, al comparar el patrón, ignora las minúsculas y mayúsculas, basta con que contenga esa secuencia de letras. Desliza hacia abajo para ver más filas y trata de entender porqué esas filas fueron seleccionadas.

Ahora vamos a filtrar todas aquellas filas que valor en su columna “nombre” terminen con ” red” (observa que hay un espacio antes de “red”) y observa los resultados:

Operador LIKE con comodín %.

El comodín % puede aparecer cualquier número de veces en el patrón LIKE y no sólo al principio y/o al final del patrón, por ejemplo:

Operador LIKE con comodín %.

Observa que mostrará todos aquellos productos que su nombre comiencen con “tarjeta” y terminen con “red” sin importar los caracteres que existan entre estas dos secuencias de caracteres. Trata de crear tu propio patrón LIKE y pruébalo.

Veamos ahora un ejemplo del uso del comodín “_” en un patrón LIKE. Ambos comodines pueden existir en un mismo patrón LIKE.

Supongamos que queremos obtener todos los registros que el valor de su columna “no_parte” (número de parte del producto) conste de 5 letras y que comience con la letra “L” y termine con el caracter cero (0).

El patrón LIKE a usar sería: la letra “L”, tres guiones bajos y el caracter 0 (cero). Sería así ‘L___0’. Escribe y ejecuta la consulta y observa los resultados.

LIKE con comodín “_”.

Recuerda que el comodín “_” (guión bajo) representa cualquier caracter, pero sólo uno. Los tres guiones bajos en el patrón LIKE de la sentencia anterior, indican tres caracteres, cualesquiera, pero sólo tres. Cambia el patrón del LIKE del ejemplo anterior reemplazando la letra “L” por la letra “T” y ve que pasa.

Operador IN (EN).

Sintaxis: expresión IN (lista-valores)

El operador IN regresará verdadero cuando el valor de la expresión se encuentre en la lista de valores dados, en caso contrario regresará falso. Veamos un ejemplo. Escribe, ejecuta y observa los resultados de la siguiente sentencia SQL:

Operador IN.

La sentencia anterior le indica a la consulta que solo muestre las filas que en su columna “id_marca” tengan los valores listados: 627, 628 o 624. El opeador IN también funciona con lo tipos de datos TEXT (texto). Escribe y ejecuta la sentencia siguiente y observa los resultados:

Operador IN con expresión caracter.

En el ejemplo anterior le estamos indicando a la instrucción SELECT que sólo muestre las filas donde el valor de “nombre” sea igual a las palabras contenidas en la lista: ‘Pegamento’ o ‘Folder’.

Practica con los tres operadores que hemos visto en esta sección: BETWEEN, LIKE e IN.

Hasta el momento sólo hemos filtrado filas o registros aplicando una sola condición que nos regresa falso o verdadero. En la siguiente sección veremos los operadores lógicos que permiten combinar dos condiciones o más en la cláusula WHERE, es decir, formaremos condiciones un poco más complejas combinando valores booleanos falsos y verdaderos.

¡Hasta pronto!