Script – PATINDEX

Olá pessoal.

Quem nunca teve um cadastro de funcionários, cliente ou alunos com informações armazenados na coluna errada…

No trabalho, tivemos que gerar um arquivo com o cadastro dos funcionários e nos deparamos com os números do endereço armazenados na coluna de endereço. A coluna número havia sido ignorada.

Para separar estes dados a fim de atender o layout proposto, utilizei a função PATINDEX.

Esta função nos permite usar caracteres curingas para pesquisar sua posição inicial dentro de uma expressão.
Em nosso caso, usamos o curinga %[0-9]% para retornar a posição inicial na coluna de endereço ao encontrar números de 0 a 9.

Exemplificando:

IF OBJECT_ID('tempdb..#FUNCIONARIO') IS NOT NULL
DROP TABLE #FUNCIONARIO
GO

CREATE TABLE #FUNCIONARIO
	(MAT_FUNCIONARIO INT IDENTITY(1,1) PRIMARY KEY,
	 NOM_FUNCIONARIO VARCHAR(50) NOT NULL,
	 END_FUNCIONARIO VARCHAR(50) NOT NULL)

INSERT INTO #FUNCIONARIO VALUES ('JOAO AUGUSTO JR.','AV. MARCOS BARROS 28')
INSERT INTO #FUNCIONARIO VALUES ('MARIA AUGUSTA SANTOS','RUA YPIRANGA 1189')
INSERT INTO #FUNCIONARIO VALUES ('HELENO DE FREITAS','TRAVESSA RICARDO MACHADO 766')
INSERT INTO #FUNCIONARIO VALUES ('LUCAS MORAES DE ANDRADA','AVENIDA RIO BRANCO 11555')
INSERT INTO #FUNCIONARIO VALUES ('DAIANE DA SILVA','RUA VINTE E CINCO DE AGOSTO, 663')
INSERT INTO #FUNCIONARIO VALUES ('GUILHERME DA CUNHA','RUA LUIZA')
Cadastro de funcionários

Cadastro de funcionários

Utilizando a função PATINDEX

SELECT
    MAT_FUNCIONARIO,
    NOM_FUNCIONARIO,
    CASE
        WHEN PATINDEX('%[0-9]%',END_FUNCIONARIO) > 0
        THEN SUBSTRING(END_FUNCIONARIO,0,PATINDEX('%[0-9]%',END_FUNCIONARIO))
        ELSE END_FUNCIONARIO
    END END_FUNCIONARIO,
    CASE
        WHEN PATINDEX('%[0-9]%',END_FUNCIONARIO) > 0
        THEN SUBSTRING(END_FUNCIONARIO,PATINDEX('%[0-9]%',END_FUNCIONARIO),LEN(END_FUNCIONARIO))
        ELSE ''
    END NUM_ENDERECO
FROM #FUNCIONARIO
Usando a função PATINDEX

Usando a função PATINDEX

Espero que este post lhe seja útil.

Até o próximo post.
Explore posts in the same categories: Scripts, SQL Server, Virtual PASS BR

Tags: , ,

You can comment below, or link to this permanent URL from your own site.

One Comment em “Script – PATINDEX”


  1. […] = converte uma string uppercase para lowercase. LTRIM(string) = remove os espaços em branco PATINDEX(posicao, expressao) = devolve a posicão de uma string dentro de um texto. Se não encontrar, […]


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: