Potrzebuję wykonać kwerendę przeciwko starszej tabeli, która przechowuje tekst zakodowany w adresie URL. Potrzebuję tego tekstu do odkodowania w moich wynikach. Jak to osiągnąć?Dekodowanie adresu URL serwera SQL
10
A
Odpowiedz
20
Wypróbuj jedno z nich:
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
z 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
Poszedł z pierwszym ogniwem. Ty, mój przyjacielu, oszczędzasz życie. Dzięki! –
0
kodu nie jest praca dla mnie .... Oto mój kod:
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`
Funkcja „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
Powiązane problemy
- 1. Dekodowanie adresu URL w języku Python?
- 2. Dekodowanie adresu URL UTF-8 w Pythonie
- 3. Dekodowanie URL w PHP
- 4. Kodowanie i dekodowanie adresu URL w rdzeniu ASP.NET
- 5. Dekodowanie adresu URL zakodowanych ciągów UTF-8 w VBScript
- 6. Uzyskiwanie obrazu z adresu URL/serwera
- 7. Przekierowanie adresu URL z serwera ADFS
- 8. Dekodowanie adresu ucieczki bez użycia HttpUtility.UrlDecode
- 9. "Nie można znaleźć określonego adresu URL serwera serwera" podczas wdrażania do serwera raportowania
- 10. Uzyskiwanie pełnego adresu URL z adresu URL znakiem tyldy (~)
- 11. Znajdowanie adresu URL LDAP?
- 12. Jak uzyskać nazwę serwera w Django dla pełnego adresu URL?
- 13. Obsługa adresu URL RESTful URL
- 14. Wywołanie adresu URL rakiety
- 15. Dekodowanie ze znaków zbiegów w adresie URL
- 16. Wicket: Względem bezwzględnego adresu URL lub adresu URL bazy
- 17. Szykuje jak zażądać adresu URL z wyjątkiem parametrów adresu URL?
- 18. ProxyHTML do przepisania adresu URL
- 19. Zdobądź część adresu URL
- 20. Przekierowanie adresu URL Django
- 21. Kodowanie adresu URL Drupala
- 22. Parametry adresu URL GWT
- 23. Kodowanie adresu URL MVC3?
- 24. .htaccess Przepisywanie adresu URL
- 25. Sprawdzanie adresu URL mvc4
- 26. Wyczyść przekierowanie adresu URL
- 27. Algorytm skracania adresu URL
- 28. Parsować domenę z podanego adresu URL w T-SQL
- 29. Kodowanie adresu URL programu ASP.Net
- 30. Asp.Net Absolutna ścieżka adresu URL
Jeśli używasz języka programowania, aby uruchomić kwerendę, to chyba najłatwiejszy do URL zakodować zapytania, jak również. –