Publicado el Dejar un comentario

Oracle: rellenar a la derecha o izquierda con algún caracter un texto.

A veces necesitamos formatear una columna de un resultado de una consulta SQL en Oracle para que se muestre con una longitud fija. Es decir que el valor de la columna o campo sea de longitud fija en el resultado.

Formatear resultados de una consulta SQL con un caracter dado.

Para formatear la salida de una columna podemos usar las funciones RPAD o LPAD del motor de la base de datos Oracle.

Dicen que una imagen dice más que mil palabras así que dejo una imagen de la sentencia y el resultado:

Ejemplo de la funciones SQL RPAD() y LPAD() de Oracle.

¿Que está sucediendo? Bueno las funciones RPAD() y LPAD() de Oracle regresan un texto de una longitud fija. Ambas funciones aceptan tres parámetros, un texto, la longitud del texto resultante y un caracter con el que va a rellenar los espacios faltantes del texto dado para completar la longitud del texto final.

En el ejemplo anterior la función RPAD() recibe la constante o literal “Introducción”, el número 30 como la longitud del texto a devolver y el caracter punto (.) como el caracter de relleno. La longitud de la constante “Introducción” es de 12 caracteres, por lo tanto faltan 18 caracteres para completar los 30 que va a contener el texto resultante (30-12 = 18). RPAD() rellena con el caracter de relleno,en este caso punto (.) esos 18 caracteres faltantes y los coloca a la derecha del texto original quedando así:

Introducción………………

El texto “Introducción” y doce puntos a la derecha del texto. Precisamente la R es de la palabra inglesa RIGHT (derecha en español).

Una vez visto cómo funciona esta primera función, nos será fácil entender como funciona la segunda. LPAD() tiene el mismo funcionamiento, sólo que el relleno lo hará a la izquierda del texto original. La letra L es de la palabra inglesa LEFT (izquierda en español).

En el ejemplo anterior LPAD() regresará un texto de longitud 3:

..1

Dos puntos y el caracter 1. El resultado final de la instrucción SELECT es la concatenación (operador dos barras verticales o pipes [||] )de lo que regresan las funciones RPAD() y LPAD() y le asigna el alias “indice” a la columna resultante. El resultado final es:

Introducción………………..1

Espero y les sea útil.

¡Hasta pronto!

Publicado el 3 comentarios

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, sólo los espacios o caracteres de los extremos, 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:

Función TRIM() quitando espacios.
Función TRIM() quitando caracteres.

En el primer ejemplo de la función TRIM() omitimos el segundo parámetro de la función, por lo tanto la función remueve todos los espacios a la extrema derecha e izquierda del texto dado. Observe que no remueve los espacios intermedios, sólo los de los extremos. En los resultados se muestran tanto el texto con espacios removidos como el texto original.

En el segundo ejemplo incluimos el segundo parámetro, que son los caracteres que queremos remover de los extremos del texto dado. En este caso queremos remover todos los caracteres “+” (más) y “-” menos o guión. en los resultados se muestra el texto resultante.

Función SQL REPLACE().

Regresa un texto resultante de la sustitución de cada ocurrencia de un texto buscado dentro de un texto por un texto de reemplazo.

Sintaxis: REPLACE(texto, texto-a-reemplazar, texto-de-reemplazo);

Si el parámetro texto-de-reemplazo es un texto vacío (”), el texto-a-reemplazar se sustituye por nulos (nada). Observa los siguientes ejemplos:

Función REPLACE().
Función REPLACE() con texto vacío.

En el primer ejemplo, todas las letras o en el texto “Texto original” son sustituidas por la letra a. El el segundo ejemplo las letras o son eliminadas y no son sustituidas por nada ya que se especifica como reemplazo un texto vacío.

Función de concatenación.

Muchos motores de base de datos tienen la función CONCAT() para concatenar o unir textos, SQLite no implementa dicha función, en su lugar utiliza el operador de concatenación “||” (dos barras verticales).

Syntaxis: texto || texto

Escribe y ejecuta los siguientes ejemplos:

Concatenando dos textos.
Concatena tres textos.

En el primer ejemplo concatenamos dos literales textos, en el segundo ejemplo, se concatenan tres literales textos.

Nota: recuerda que en todas las funciones anteriormente vistas los textos literales o constantes que usamos pueden ser reemplazados por columnas o campos de una tabla.

En la siguiente sección veremos la funciones SQL aplicadas a números o matemáticas más usadas.

¡Hasta pronto!

IR A LA PAGINA DEL CURSO.

Publicado el 1 comentario

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!

IR A LA PAGINA DEL CURSO.