14 manipulações com String no Postgres

Durante o ciclo de desenvolvimento de uma procedure ou script Transact-SQL, quantas vezes você já precisou manipular uma String no Postgres, e se perguntou qual seria a função ou comando mais adequado? Como exemplo, imagine que você tenha uma string com o nome completo e seja necessário listar apenas o primeiro nome. Ou ainda precisa identificar a posição inicial de um texto.

Felizmente, assim como em outras linguagens de programação, o Transact-SQL do Postgres oferece inúmeras funções que torna mais fácil a manipulação de strings. Vamos listar 14 delas.

1. SUBSTR() ou SUBSTRING()

Tanto o SUBSTR(), quanto o SUBSTRING() são funções que tem o mesmo objetivo, retirar parte de uma String, a partir de uma determinada posição.

Declarações das funções: substr(string text, posicao integer, quantidade integer) e substring(string text, posicao integer, quantidade integer).

Exemplo: Em ambos os exemplos abaixo, o resultado será “brasileiro”.

SELECT SUBSTR('Eu sou brasileiro', 8, 10);
SELECT SUBSTRING('Eu sou brasileiro', 8, 10);
SELECT SUBSTRING('Eu sou brasileiro' FROM 8 FOR 10);

2. REPEAT()

Como o próprio nome diz, a função REPEAT(), repete uma string quantas vezes for necessário.

Declaração da função: repeat(string text, numero integer).

Exemplo: Neste exemplo, teremos a string ‘BRASIL’ se repetindo por 3 vezes, resultado a string ‘BRASILBRASILBRASIL’.

SELECT REPEAT('BRASIL', 3);

3. REPLACE()

Para substituir todas as ocorrências na string inicial, da string de origem pela de destino utilizaremos esta função.

Declaração da função: replace(string_inicial text, origem text, destino text).

Exemplo: No exemplo a seguir, vamos substituir o texto ‘Argentina’ por ‘Brasil’ na String ‘Argentina penta campeão do mundo’. O resultado será ‘Brasil penta campeão do mundo’.

SELECT REPLACE('Argentina penta campeão do mundo', 'Argentina', 'Brasil');

4. POSITION() ou STRPOS()

As funções position() e strpos() servem para retornar um número que corresponde a posição inicial da substring em uma string.

Declaração da função: position(substring text in string text) e strpos(string text, substring text).

Exemplo: O resultado no exemplo a baixo é 4.

SELECT POSITION('no' in 'Gagno.com');
SELECT STRPOS('Gagno.com', 'no');

5. TRIM()

A função trim() tem como objetivo remover caracteres (espaço por padrão) da extremidade inicial, final ou ambas as extremidades da string, podendo atingir o resultado de duas formas para cada tipo. Caso use a função trim é importante identificar o uso do primeiro parâmetro que pode ser:

leading -> para remoção à esquerda -> que corresponde ao LTRIM();

trailing -> para remoção à direita -> que corresponde ao RTRIM();

both -> para remoção em ambos os lados.

Declaração da função:

ltrim(string text [, caracter text]), rtrim(string text [, caracter text]), trim(string text [, caracter text]) e trim([leading | trailing | both]  [string text] FROM string text).

Exemplo: No exemplo, será demonstrado o funcionamento da função para remover espaço em branco e também o caracter x de ambas as formas. Veja:

-- Removendo à esquerda
SELECT LTRIM(' Testando '); -- Removendo espaço em branco.
SELECT TRIM(leading from ' Testando '); -- Removendo espaço em branco.
SELECT LTRIM('xxTestandox', 'x'); -- Removendo caracter x.
SELECT TRIM(leading 'x' from 'xxTestandox'); -- Removendo caracter x.
-- Removendo à direita
SELECT RTRIM(' Testando '); -- Removendo espaço em branco.
SELECT TRIM(trailing from ' Testando '); -- Removendo espaço em branco.
SELECT RTRIM('xxTestandox', 'x'); -- Removendo caracter x.
SELECT TRIM(trailing 'x' from 'xxTestandox'); -- Removendo caracter x.
-- Removendo em ambas as extremidades
SELECT TRIM(' Testando '); -- Removendo espaço em branco.
SELECT TRIM(both from ' Testando '); -- Removendo espaço em branco.
SELECT TRIM('xxTestandox', 'x'); -- Removendo caracter x.
SELECT TRIM(both 'x' from 'xxTestandox'); -- Removendo caracter x.

6. LOWER() e UPPER()

A função lower() converte os caracteres da string para minúsculo, enquanto a função upper() converse os caracteres da string para maiúsculo.

Declarações das funções: lower(string text) e upper(string text).

Exemplo: Veremos no exemplo a conversão das strings. Veja:

SELECT LOWER('EXEMPLO');
SELECT UPPER('exemplo');

7. DOIS || (pipes)

Para concatenar strings, basta fazer uso de dois pipes.

Exemplo: Vamos concatenar as strings resultando a string ‘abcde’.

SELECT 'ab' || 'cd' || 'e';

8. OVERLAY()

Essa função é usada para substituir parte dos caracteres de uma string (sobreposição).

Declaração da função: overlay(string placing string from integer [for integer]).

Exemplo: No exemplo abaixo, vamos demonstrar o uso da função, inclusive sem o último parâmetro.

SELECT OVERLAY('Argentina penta campeão do mundo' placing 'Brasil' from 1 for 9);
SELECT OVERLAY('Brasil' placing 'ão' from 5);

9. INITCAP()

Esta função converte a primeira letra de cada palavra da string em maiúscula e as outras em minúsculo.

Descrição da função: initcap(text).

Exemplo: Repare a string gerada na aplicação da função (“Brasil Penta Campeão Do Mundo”).

SELECT INITCAP('brasil penta campeão do mundo');

10. CHR()

Esta função retorna o caracter correspondente ao código ASCII informado.

Declaração da função: chr(integer).

Exemplo: No exemplo abaixo, vamos exibir a string ‘AB’.

SELECT CHR(65) || CHR(66);

11. LPAD() e RPAD()

Essa função preenche a string até o comprimento adicionando os caracteres de preenchimento (espaço por padrão) à esquerda -> lpad ou à direita -> rpad(). Se a string for mais longa que o comprimento então é truncada (à direita).

Declaração da função: lpad(string text, comprimento integer [, preenchimento text]) e rpad(string text, comprimento integer [, preenchimento text]).

Exemplo: No exemplo abaixo, repare que no primeiro e terceiro caso será adicionado espaço na string.

SELECT LPAD('oi', 5); -- resultado "   oi".
SELECT LPAD('oi', 5, 'ae'); -- resultado "aeaoi".
SELECT RPAD('oi', 5); -- resultado "oi   ".
SELECT RPAD('oi', 5, 'ae'); -- resultado "oiaea".

12. MD5()

Essa função serve para calcular o md5 da string e retorna em hexadecimal.

Declaração da função: md5(string text).

Exemplo:

SELECT MD5('TESTEmd5');

13. SPLIT_PART()

Essa função divide a string utilizando o delimitador, retornando o campo especificado (contado a partir de 1).

Declaração da função: split_part(string text, delimitador text, posicao integer).

Exemplo: O retorno da query será a string “oub”.

SELECT SPLIT_PART('aei~#~oub~#~cdf', '~#~', 2);

14. TRANSLATE()

Nessa função todo caracter da string que corresponde a um caracter do conjunto origem, é substituído pelo caracter correspondente do conjunto destino.

Declaração da função: translate(string text, origem text, destino text).

Exemplo:

SELECT TRANSLATE('12345', '25', 'zm');

E VOCÊ, TEM ALGUMA OBSERVAÇÃO A FAZER?

Se você já precisou utilizar alguma dessas funções ou utilizou alguma que não contém neste post. Partilhe sua experiência. Comente.

Até já!

8 thoughts on “14 manipulações com String no Postgres”

  1. Muito bom este post, vai me ajudar muito, porem tenho uma duvida:
    Eu tenho um valor tipo string ‘815:45’ eu preciso pegar o 815 e o 45 e transformar cada um em inteiro para efetuar cálculos. Pegar os numero separados você mostro no seu post porem como eu transformo ele em inteiro?
    Desde já obrigado.

  2. Muito interessante o post, tirou uma grande dúvida e lógico me ajudou bastante, é bom ter pessoas que compartilham conhecimento

Leave a reply

Your email address will not be published. Required fields are marked *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.