|
WX - Função SQL Slipt (Dividindo uma String) |
Started by BOLLER, Mar., 18 2017 12:24 PM - No answer |
| |
| | | |
|
| |
Registered member 3,651 messages Popularité : +175 (223 votes) |
|
Posted on March, 18 2017 - 12:24 PM |
Prezados,
Me deparei com um problema onde eu queria pegar no sql apenas as iniciais de um nome, para isso criei a função split
dbo.Split(Logradouro, 'busca', posicao)
A split pega do campo a ocorrência podendo ser ; ou espaço ou | ou , ou um caracter especifico que desejar.
Pode ser usada para uma carga .CSV ou apenas para pegar partes de uma string.
Para criar a função SPLIT (Dividindo uma String):
USE [Model] GO
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[Split] ( @String varchar(8000), @Separador varchar(8000), @PosBusca int ) RETURNS varchar(8000) AS BEGIN
DECLARE @Index int, @Max int, @Retorno varchar(8000)
DECLARE @Partes as TABLE ( Id_Parte int identity(1,1), Texto varchar(8000) )
SET @Index = charIndex(@Separador,@String)
WHILE (@Index > 0) BEGIN INSERT INTO @Partes SELECT SubString(@String,1,@Index-1) SET @String = Rtrim(Ltrim(SubString(@String,@Index+Len(@Separador),Len(@String)))) SET @Index = charIndex(@Separador,@String) END
IF (@String != '') INSERT INTO @Partes SELECT @String
SELECT @Max = Count(*) FROM @Partes
IF (@PosBusca = 0) SET @Retorno = Cast(@Max as varchar(5)) IF (@PosBusca < 0) SET @PosBusca = @Max + 1 + @PosBusca IF (@PosBusca > 0) SELECT @Retorno = Texto FROM @Partes WHERE Id_Parte = @PosBusca
RETURN RTRIM(LTRIM(@Retorno))
END
Modo de usar, exemplo:
select top 100 dbo.Split(Logradouro, ' ',1), dbo.Split(Logradouro, ' ',2), dbo.Split(Logradouro, ' ',3), dbo.Split(Logradouro, ' ',4), dbo.Split(Logradouro, ' ',5), * from enderecoscorreios
Com isso pego de um endereço as iniciais, exemplo:
Endereço: Rua Julia Amazonas
A função SQL acima vai retornar:
R J A
Bons estudos!!!
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modified, March, 18 2017 - 12:24 PM |
| |
| |
| | | |
|
| | | | |
| | |
|