Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
funções para realizar a conversão para ASC e depois a desconversão em SQL Server
possíveis casos de uso:
select dbo.convertASC('Erivelton') -->Retorna: 69-114-105-118-101-108-116-111-110- select dbo.DESconvertASC('69-114-105-118-101-108-116-111-110-') -->Retorna: Erivelton- outro situação seria em uma consulta sql com o caracter percentagem "%" (e agora é percentagem ou porcentagem ??????)
set nocount on create table #teste (teste varchar(30)) insert into #teste (teste) values ('teste%') insert into #teste (teste) values ('teste') insert into #teste (teste) values ('%teste') insert into #teste (teste) values ('e%') --consultando pelos códigos 101 e 37 que equivalem respectivamente "e" e "%" select dbo.convertASC(teste), * from #teste where dbo.convertASC(teste) like '%101-37%' --consultado só quando encontrar "e%" --OU colocaremos a função converterASC dentro do like pra naum ter que ficar adivinhando os códigos... select dbo.convertASC(teste), * from #teste where dbo.convertASC(teste) like '%' + dbo.convertASC('e%') + '%' --consultado só quando encontrar "e%" drop table #testeOBS.: para consultas like com o caracter "%" na string a ser pesquisada este foi a unica forma que consegui, caso tiver alguma forma mais simples por favor poste aqui...
vamos as funções:
Função para converter em ASC
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[convertASC]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[convertASC] GO CREATE FUNCTION convertASC (@param_Entrada VARCHAR(8000)) RETURNS VARCHAR(8000) AS BEGIN DECLARE @posicao INT, @aux VARCHAR(8000) SET @aux = '' SET @posicao = 1 WHILE @posicao <= DATALENGTH(@param_Entrada) BEGIN SET @aux = @aux + LTRIM(STR(ASCII(SUBSTRING(@param_Entrada, @posicao, 1)))) + '-' SET @posicao = @posicao + 1 END RETURN @aux END **Função para DESconverter **
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DESconvertASC]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[DESconvertASC] GO CREATE FUNCTION DESconvertASC (@param_Entrada VARCHAR(8000)) RETURNS VARCHAR(8000) AS BEGIN DECLARE @Valor_Original VARCHAR(8000), @Caracter VARCHAR(8000), @position INT Set @Caracter = '' set @Valor_Original = '' set @position = 1 WHILE @position <= DATALENGTH(@param_Entrada) BEGIN IF SUBSTRING(@param_Entrada, @position, 1) = '-' begin Set @Valor_Original = @Valor_Original + CHAR(@Caracter) set @Caracter = '' end else begin set @Caracter = @Caracter + SUBSTRING(@param_Entrada, @position, 1) end SET @position = @position + 1 END RETURN @Valor_Original END
AUTOR: "eriva_br"
Dúvidas, criticas, contribuições, correções e adições seram bem vindas.
Carregando comentários...