Listado completo de tutoriales

21 - Funciones para el manejo de cadenas


PostgreSQL tiene funciones para trabajar con cadenas de caracteres. Estas son algunas:

char_length(string): Retorna la longitud del texto. Ejemplo:

select char_length('Hola');

retorna un 4.


upper(string): Retorna el texto convertido a mayúsculas. Ejemplo:

select upper('Hola');

retorna 'HOLA'.


lower(string): Retorna el texto convertido a minúsculas. Ejemplo:

select lower('Hola');

retorna 'hola'.


position(string in string): Retorna la posición de un string dentro de otro. Si no está contenido retorna un 0. Ejemplo:

select position('Mundo' in 'Hola Mundo');

retorna 6.

select position('MUNDO' in 'Hola Mundo');

retorna 0 (ya que no coinciden mayúsculas y minúsculas)


substring(string [from int] [for int]): Retorna un substring, le indicamos la posición inicial y la cantidad de caracteres a extraer desde dicha posición. Ejemplo:

select substring('Hola Mundo' from 1 for 2);

retorna 'Ho'.

select substring('Hola Mundo' from 6 for 5);

retorna 'Mundo'.


trim([leading|trailing|both] [string] from string): Elimina caracteres del principio o o final de un string. Por defecto elimina los espacios en blanco si no indicamos el caracter o string. Ejemplo:

select char_length(trim('  Hola Mundo  '));

retorna un 10. Esto es debido a que primero se ejecuta la función trim que elimina los dos espacios iniciales y los dos finales.

select char_length(trim(leading ' ' from '  Hola Mundo  '));

retorna un 12. Esto es debido a indicamos que elimine los espacios en blanco de la cadena solo del comienzo (leading).

select trim(trailing '-' from '--Hola Mundo----');

retorna '--Hola Mundo'. Esto es debido a indicamos que elimine los guiones del final del stirng.


ltrim(string,string): Elimina los caracteres de la izquierda según el dato del segundo parámetro de la función. Ejemplo:

select char_length(ltrim('  Hola'));

retorna un 4.

select ltrim('---Hola','-');

retorna 'Hola'.


rtrim(string,string): Elimina los caracteres de la derecha según el dato del segundo parámetro de la función. Ejemplo:

select char_length(rtrim('Hola  '));

retorna un 4.

select rtrim('Hola----','-');

retorna un 'Hola'.


substr(text,int[,int]): Retorna una subcadena a partir de la posición que le indicamos en el segundo parámetro hasta la posición indicada en el tercer parámetro. Ejemplo:

select substr('Hola Mundo',2,4);

retorna 'ola'.

select substr('Hola Mundo',2);

retorna 'ola Mundo' (si no indicamos el tercer parámetro retorna todo el string hasta el final)


lpad(text,int,text): Rellena de caracteres por la izquierda. El tamaño total de campo es indicado por el segundo parámetro y el texto a insertar se indica en el tercero. Ejemplo:

select lpad('Hola Mundo',20,'-');

retorna '----------Hola Mundo'.


rpad(text,int,text): Rellena de caracteres por la derecha. El tamaño total de campo es indicado por el segundo parámetro y el texto a insertar se indica en el tercero. Ejemplo:

select rpad('Hola Mundo',20,'-');

retorna 'Hola Mundo----------'.

select rpad('Hola Mundo',20,'-*');

retorna 'Hola Mundo-*-*-*-*-*'.


Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 drop table if exists libros;
 
 create table libros(
  codigo serial,
  titulo varchar(40) not null,
  autor varchar(20) default 'Desconocido',
  editorial varchar(20),
  precio decimal(6,2),
  cantidad smallint default 0,
  primary key (codigo)
 );

 insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Emece',25);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Java en 10 minutos','Mario Molina','Siglo XXI',50.40,100);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',15,50);

 -- Mostramos sólo los 12 primeros caracteres de los títulos de los libros y
 -- sus autores, empleando la función "substring()":
 select substring(titulo,1,12) as titulo
  from libros;

  -- Mostramos los títulos, autores y editoriales de todos libros, 
  -- al último campo lo queremos en mayúsculas:
  select titulo, autor, upper(editorial)
   from libros;

  -- Mostrar todos los títulos de los libros rellenando con el
  -- caracter '-' a la derecha.
  select rpad(titulo,40,'-') from libros;

 -- Imprimimos todo los libros que contienen la cadena 'en' en alguna 
 -- parte del título del libro.
 select * 
   from libros
   where position('en' in titulo)>0;

 -- Imprimimos todos los libros que tienen un título con 10 o más caracteres:
 select *
   from libros
   where char_length(titulo)>=10;

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin funciones para el manejo de cadenas


Retornar