Voltar para a lista de artigos Artigos
3 minutos de leitura

Extraindo dados de uma corda: SPLIT_PART no PostgreSQL

Saiba como usar split_part no PostgreSQL para extrair dados de cordas.

Com bastante freqüência, gostaríamos de extrair partes de uma string quando trabalhamos com valores de texto. Um exemplo comum é quando temos um nome completo e precisamos recuperar apenas o sobrenome. Neste artigo, vamos examinar como fazê-lo usando split_part no PostgreSQL, ou seja, uma função relacionada a strings que pode ser usada para extrair um substrato.

Por que usar funções de string em seu banco de dados?

Há muitas razões pelas quais você gostaria de usar funções de string SQL como split_part no PostgreSQL em seu banco de dados, mas a principal razão é para tratar de problemas comuns de qualidade de dados. Em outro artigo intitulado "Como lidar com caracteres indesejados em SQL", demos uma olhada em como as funções comuns das strings SQL podem nos ajudar a controlar a qualidade de nossos dados. Neste artigo, vamos nos concentrar principalmente na extração de partes de uma cadeia de caracteres para análise posterior.

Para uma melhor compreensão, trabalharemos com uma tabela com amostras de dados de assistência médica criadas por um médico que armazena todas as informações de seus pacientes nesta única tabela. A tabela contém o nome completo do paciente, a data de sua visita, o diagnóstico do médico, o tratamento sugerido pelo médico e quaisquer medicamentos prescritos pelo médico.

Toda vez que um paciente visita seu consultório, o médico cria um novo registro e digita manualmente suas anotações no banco de dados. Vamos nos concentrar principalmente na coluna drugs_in_receipt. Se dermos uma olhada no banco de dados abaixo, podemos ver uma lista de medicamentos separados por vírgula sob essa coluna.

Full_Name date diagnostic treatment Drugs_in_receipt
John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol”
Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol”
Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol”
Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol”
AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin”
Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol”

Extração de uma Substring a partir de uma String com PostgreSQL SPLIT_PART

Suponha que o primeiro medicamento em cada lista seja o principal medicamento que o paciente precisará tomar, e nosso médico queira extrair o principal medicamento de cada lista sob a coluna drugs_in_receipt. Este campo armazena uma lista de medicamentos prescritos pelo médico para cada caso. Como já mencionamos, estes nomes de medicamentos são separados por vírgula, como "aspirina, paracetamol".

Usaremos a função PostgreSQL split_part para extrair somente o primeiro nome do medicamento de cada registro. Aqui está a consulta que vamos usar:

SELECT split_part(drugs_in_receipt, ',',1) as first_medicine
FROM  patient_data

A função PostgreSQL split_part leva três argumentos. O primeiro é o nome do campo - neste caso, drugs_in_receipt. O segundo argumento é o delimitador (uma vírgula), e o terceiro é a posição do elemento desejado. Em nosso exemplo, queremos o primeiro elemento da lista, então passamos em 1 como o terceiro argumento.

first_medicine
“aspirin
“penicillin
“aspirin
“penicillin
“amoxicillin”
“paracetamol”

Se observarmos de perto o resultado, podemos ver uma citação dupla de abertura antes de cada nome de droga. Como podemos remover isto? Em um de nossos outros artigos, aprendemos como você pode usar a função SQL TRIM para remover caracteres indesejados. Para nossos propósitos, vamos especificar o que queremos remover trim - as aspas duplas.

SELECT trim( split_part( drugs_in_receipt , ',' , 1) , ' “” ')
FROM  patient_data
first_medicine
aspirin
penicillin
aspirin
penicillin
amoxicillin
paracetamol

Pronto! Isso foi muito fácil, não foi?

Aprenda mais sobre as funções SQL String

A função PostgreSQL split_part é uma das ferramentas mais importantes para a manipulação de entradas de strings em seu banco de dados. Mas é apenas uma entre muitas outras funções úteis que você deve aprender se planeja dominar o SQL. Para isso, não deixe de verificar nossa Funções Comuns em SQL curso. Experimente hoje de graça!