Necesito ejecutar una consulta en una tabla heredada que almacena el texto codificado en la URL. Necesito que este texto sea decodificado en mis resultados. ¿Cómo logro esto?Descodificación de URL del servidor SQL
10
A
Respuesta
20
probar uno de estos:
CREATE FUNCTION dbo.UrlDecode(@url varchar(3072))
RETURNS varchar(3072)
AS
BEGIN
DECLARE @count int, @c char(1), @cenc char(2), @i int, @urlReturn varchar(3072)
SET @count = Len(@url)
SET @i = 1
SET @urlReturn = ''
WHILE (@i <= @count)
BEGIN
SET @c = substring(@url, @i, 1)
IF @c LIKE '[!%]' ESCAPE '!'
BEGIN
SET @cenc = substring(@url, @i + 1, 2)
SET @c = CHAR(CASE WHEN SUBSTRING(@cenc, 1, 1) LIKE '[0-9]'
THEN CAST(SUBSTRING(@cenc, 1, 1) as int)
ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 1, 1)))-55 as int)
END * 16 +
CASE WHEN SUBSTRING(@cenc, 2, 1) LIKE '[0-9]'
THEN CAST(SUBSTRING(@cenc, 2, 1) as int)
ELSE CAST(ASCII(UPPER(SUBSTRING(@cenc, 2, 1)))-55 as int)
END)
SET @urlReturn = @urlReturn + @c
SET @i = @i + 2
END
ELSE
BEGIN
SET @urlReturn = @urlReturn + @c
END
SET @i = @i +1
END
RETURN @urlReturn
END
GO
de http://sqlblog.com/blogs/peter_debetta/archive/2007/03/09/t-sql-urldecode.aspx
CREATE FUNCTION dbo.fnDeURL
(
@URL VARCHAR(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Position INT,
@Base CHAR(16),
@High TINYINT,
@Low TINYINT,
@Pattern CHAR(21)
SELECT @Base = 'abcdef',
@Pattern = '%[%][0-9a-f][0-9a-f]%',
@URL = REPLACE(@URL, '+', ' '),
@Position = PATINDEX(@Pattern, @URL)
WHILE @Position > 0
SELECT @High = CHARINDEX(SUBSTRING(@URL, @Position + 1, 1), @Base COLLATE Latin1_General_CI_AS),
@Low = CHARINDEX(SUBSTRING(@URL, @Position + 2, 1), @Base COLLATE Latin1_General_CI_AS),
@URL = STUFF(@URL, @Position, 3, CHAR(16 * @High + @Low - 17)),
@Position = PATINDEX(@Pattern, @URL)
RETURN @URL
END
+0
Fuimos con el primer enlace. Tú mi amigo, eres un salvavidas. ¡Gracias! –
0
El código no es trabajo para mí .... Aquí mi código:
create function [UrlDecode](@url nvarchar(max))
returns nvarchar(max)
as
begin
declare @output nvarchar(max), @C nvarchar(255), @C1 nvarchar(255), @C2 nvarchar(255), @IsUrl int
set @output = ''
declare @T table(I int identity(1,1), C nvarchar(255))
insert @T(C)
select items from dbo.Split(@url,'%')
set @IsUrl = charindex('%', @url)
declare cur cursor for select C from @T order by I
open cur
fetch next from cur into @C
while @@fetch_status = 0 begin
set @C1 = substring(@C, 2, 4)
set @C2 = substring(@C, 6, 255)
if substring(@C, 1, 1) = 'u' and @IsUrl <> 0 begin
if @C1 is not null
set @output = @output + char((CONVERT(INT,CONVERT(VARBINARY(4),@C1,2)))-1264)
if @C2 is not null
set @output = @output + @C2
end else begin
set @output = @output + isnull(substring(@C, 1, 255),'')
end
fetch next from cur into @C
end
close cur
deallocate cur
return @output
end`
La función "Split":
create function [Split](@String nvarchar(max), @Delimiter char(1))
returns @temptable table (items nvarchar(max))
as
begin
set @String = ltrim(rtrim(@String))
declare @idx int
declare @slice nvarchar(max)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
0
create function [dbo].[URLDecode](
@str nvarchar(max)
) returns nvarchar(max)
begin
if @str is null return null
declare @out nvarchar(max) = N''
set @str = replace(@str, N'+', N'%20')
while len(@str) > 0
begin
declare @i bigint = patindex(N'%[%][0-9a-fA-F][0-9a-fA-F]%', @str)
if @i = 0 break
set @out = @out + substring(@str, 0, @i) + convert(nchar(2), convert(varbinary, '0x' + substring(@str, @i + 1, 2), 1))
set @str = substring(@str, @i + 3, len(@str))
end
return @out + @str
end
Cuestiones relacionadas
- 1. Función de descodificación de URL de JavaScript
- 2. Descodificación de cuerpos de respuesta gzip-ed con url-retrieve
- 3. Dependencias del Servidor SQL
- 4. Redirección de URL del servidor ADFS
- 5. Descodificación del formato de archivo de transmisión RIMM
- 6. Servidor SQL notifica al servidor web del cambio de tabla
- 7. Índice filtrados del servidor SQL
- 8. Tabla temporal del servidor Sql
- 9. uso del servidor SQL columna
- 10. Evolución del esquema del servidor SQL (migraciones)
- 11. Descodificación JSON en C#
- 12. ¿Nombre de columnas variables del servidor SQL?
- 13. Modo de Autenticación Integrada del Servidor SQL
- 14. SQL tema de la identidad del servidor
- 15. es de transacción del servidor SQL atómica
- 16. Pregunta de caché del servidor SQL
- 17. Pasando el parámetro vía url al servicio de informes del servidor sql
- 18. Obtener imagen de URL/servidor
- 19. Descodificación HTTP fragmentada en Java?
- 20. Vistas del servidor SQL, bendición o maldición?
- 21. Roles, esquemas, usuarios del servidor SQL
- 22. Fundición del servidor MS SQL sin excepción
- 23. Esquema del servidor SQL y esquema predeterminado
- 24. Actualización del servidor SQL con el grupo
- 25. Pedido condicional del servidor SQL Por
- 26. Parámetro del valor de la tabla del Servidor SQL Php
- 27. Obtener URL de medios incluida la parte del servidor
- 28. Detener el secuestro del servidor de informes SQL/Informes
- 29. 500 Error interno del servidor IIS7 URL codificada
- 30. ¿Cómo puedo obtener la URL del servidor en ejecución
Si está utilizando un lenguaje de programación para ejecutar la consulta, es probable que sea más fácil de codificar URL de la consulta de búsqueda también. –