Publicado el 3 comentarios

SQL: Obtener último(s) caracteres de un campo texto.

Hola, en nuestro quehacer diario con bases de datos relacionales nos topamos a veces con que hay que extraer el o los últimos caracteres de un campo de tipo texto o string de una tabla. Según la base de datos usada la instrucción puede variar.

Enseguida veremos algunos ejemplos, en las distintas bases de datos, donde extraeremos los útimos 2 caracteres del texto constante “texto ejemplo”:

SQLite:

SELECT SUBSTR(‘texto ejemplo’, -2);

Postgresql:

SELECT SUBSTRING(‘texto ejemplo’ from ‘.{2}$’);

SELECT RIGHT(‘texto ejemplo’,2);

MySQL o MariaDB:

SELECT SUBSTRING(‘texto ejemplo’,-2);

SELECT RIGHT(‘texto ejemplo’,2);

SQL Server:

SELECT RIGHT(‘texto ejemplo’, 2);

ORACLE:

SELECT SUBSTR(‘texto ejemplo’, -2) FROM dual;

Todas las sentencias sql descritas anteriormente ejecutadas en la respectiva base de datos regresarán la cadena de caractares ‘lo’.

Dependiendo del número de caracteres a la derecha que queramos obtener sólo tendremos que cambiar el número dos por el número de caracteres deseado en cada una de las sentencias anteriores.

Espero y les séa de utilidad este artículo. Agradezco sus comentarios. ¡Saludos!

Publicado el 2 comentarios

Linux: lista de argumentos es demasiada larga al usar rm.

El mensaje “Lista de argumentos demasiada larga” o “Argument list too long” (si el lenguaje de Linux está en inglés) sale cuando intentamos borrar demasiados archivos con el comando rm (remover). Más precisamente cuando usamos el comodín asterisco (*) como parte del argumento de este comando.

Si usamos, por ejemplo, rm *.txt en un directorio o carpeta que tiene miles o cientos de miles de archivos con esa extensión, es muy común que el comando nos responda con ese mensaje ya que intenta reemplazar el asterisco con todos los nombres de los archivos encontrados en el directorio como argumentos del comando rm.

Solución a “lista de argumentos es demasiada larga” al usar rm.

La manera de borrar todos los archivos de una carpeta, siguiendo con el ejemplo anterior, que contiene muchos archivos con extensión txt, es usando el comando find de la siguiente forma:

find . -name ‘*.txt’ exec rm{} \;

Espero les sea útil esta entrada. Todo comentario es bienvenido. Nos vemos pronto. ¡Saludos!