PostgreSQL Prático/Funções Internas/Strings

Origem: Wikilivros, livros abertos por um mundo aberto.
Ir para: navegação, pesquisa

5.1 – Funções de Strings[editar | editar código-fonte]

Concatenação de Strings - dois || (pipes)

SELECT 'ae' || 'io' || 'u' AS vogais; --vogais -------- aeiou

SELECT CHR(67)||CHR(65)||CHR(84) AS "Dog"; -- Dog CAT


Quantidade de Caracteres de String

char_length - retorna o número de caracteres

SELECT CHAR_LENGTH('UNIFOR'); - -Retorna 6


Ou SELECT LENGTH('Database'); - - Retorna 8


Converter para minúsculas

SELECT LOWER('UNIFOR');


Converter para maiúsculas

SELECT UPPER('universidade');


Posição de caractere

SELECT POSITION ('@' IN 'ribafs@gmail.com'); -- Retorna 7

Ou SELECT STRPOS('Ribamar' ,'mar'); - - Retorna 5


Substring

SUBSTRING(string [FROM inteiro] [FOR inteiro])

SELECT SUBSTRING ('Ribamar FS' FROM 9 FOR 10); - - Retorna FS

SUBSTRING(string FROM padrão);

SELECT SUBSTRING ('PostgreSQL' FROM '.......'); - - Retorna Postgre

SELECT SUBSTRING ('PostgreSQL' FROM '...$'); - -Retorna SQL


Primeiros ....... e últimos ...$

Ou

SUBSTR ( 'string', inicio, quantidade);

SELECT SUBSTR ('Ribamar', 4, 3); - - Retorna mar


Substituir todos os caracteres semelhantes

SELECT TRANSLATE(string, velho, novo);

SELECT TRANSLATE('Brasil', 'il', 'ão'); - - Retorna Brasão

SELECT TRANSLATE('Brasileiro', 'eiro', 'eira');


Remover Espaços de Strings

SELECT TRIM(' SQL - PADRÃO ');


Calcular MD5 de String

SELECT MD5('ribafs'); - - Retorna 53cd5b2af18063bea8ddc804b21341d1


Repetir uma string n vezes

SELECT REPEAT('SQL-', 3); - - Retorna SQL-SQL-SQL-


Sobrescrever substring em string

SELECT REPLACE ('Postgresql', 'sql', 'SQL'); - - Retorna PostgreSQL


Dividir Cadeia de Caracteres com Delimitador

SELECT SPLIT_PART( 'PostgreSQL', 'gre', 2); - -Retorna SQL

SELECT SPLIT_PART( 'PostgreSQL', 'gre', 1); - -Retorna Post


<------gre----->

Iniciais Maiúsculas

INITCAP(text) - INITCAP ('olá mundo') - - Olá Mundo


Remover Espaços em Branco

TRIM ([leading | trailing | both] [characters] from string)- remove caracteres da direita e da esquerda. trim (both 'b' from 'babacatebbbb'); - - abacate

RTRIM (string text, chars text) - Remove os caracteres chars da direita (default é espaço)

rtrim('removarrrr', 'r') - - remova

LTRIM - (string text, chars text) - Remove os caracteres chars da esquerda

ltrim('abssssremova', 'abs') - - remova


Detalhes no item 9.4 do Manual:

http://pgdocptbr.sourceforge.net/pg80/functions-string.html


Like e %

SELECT * FROM FRIENDS WHERE LASTNAME LIKE 'M%';


O ILIKE é case INsensitive e o LIKE case sensitive.


~~ equivale ao LIKE

~~* equivale equivale ao ILIKE

!~~ equivale ao NOT LIKE

!~~* equivale equivale ao NOT ILIKE


... LIKE '[4-6]_6%' -- Pegar o primeiro sendo de 4 a 6,

-- o segundo qualquer dígito,

-- o terceiro sendo 6 e os demais quaisquer


% similar a *

_ similar a ? (de arquivos no DOS)


Correspondência com um Padrão

O PostgreSQL disponibiliza três abordagens distintas para correspondência com padrão: o operador LIKE tradicional do SQL; o operador mais recente SIMILAR TO (adicionado ao SQL:1999); e as expressões regulares no estilo POSIX. Além disso, também está disponível a função de correspondência com padrão substring, que utiliza expressões regulares tanto no estilo SIMILAR TO quanto no estilo POSIX.

SELECT substring('XY1234Z', 'Y*([0-9]{1,3})'); - - Resultado: 123

SELECT substring('XY1234Z', 'Y*?([0-9]{1,3})'); - - Resultado: 1


SIMILAR TO

O operador SIMILAR TO retorna verdade ou falso conforme o padrão corresponda ou não à cadeia de caracteres fornecida. Este operador é muito semelhante ao LIKE, exceto por interpretar o padrão utilizando a definição de expressão regular do padrão SQL.

'abc' SIMILAR TO 'abc' verdade

'abc' SIMILAR TO 'a' falso

'abc' SIMILAR TO '%(b|d)%' verdade

'abc' SIMILAR TO '(b|c)%' falso


SELECT 'abc' SIMILAR TO '%(b|d)%'; -- Procura b ou d em 'abc' e no caso retorna TRUE


REGEXP

SELECT 'abc' ~ '.*ab.*';

~ distingue a de A

~* não distingue a de A

!~ distingue expressões distingue a de A

!~* distingue expressões não distingue a de A

'abc' ~ 'abc' -- TRUE

'abc' ~ '^a' -- TRUE

'abc' ~ '(b|j)' -- TRUE

'abc' ~ '^(b|c)' -- FALSE