回答

收藏

TSQL-如何进行网址编码

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-14

寻找无错误的经过测试的SQL脚本,我可以在UDF中使用它来通过sql编码url。函数将接受一个URL并传递一个URL编码的URL。我已经看到了一些,但是我所遇到的一切似乎都存在一些缺陷。
& L  h4 }1 Y: N* z# l1 ~                ; T2 U: s( K2 O
解决方案:
5 l& M1 v- s9 x' N) l# O# ?$ I. t8 m               
' G3 b# `6 Q" X" z; E7 G$ S
" U5 R+ t# N: [% T8 s3 H$ F' o; r, p4 f8 Y% Y
                为了使用此脚本,您将需要使用Numbers表。; I% ]# w1 i1 w/ Y2 w+ N& m2 d0 M
CREATE FUNCTION [dbo].[URLEncode]
% C3 E% q, O  C    (@decodedString VARCHAR(4000))
0 s1 z/ g$ S$ D" ~" IRETURNS VARCHAR(4000)
0 ?& V, ~5 G0 zAS
" l0 f; U. g1 @: bBEGIN
6 [) Y' g# E. }3 O0 Z. m' c( Q/******2 k: D/ o7 p4 L( U5 D: U" C
*       select dbo.URLEncode('K8%/fwO3L mEQ*.}')
- @9 c* F3 Z1 N2 D+ z7 B**/4 J0 i8 T- F  X' j: a, [
DECLARE @encodedString VARCHAR(4000)4 `5 q" a1 f3 X( R, o' O
IF @decodedString LIKE '%[^a-zA-Z0-9*-.!_]%' ESCAPE '!'
- C/ f8 z( u0 `) d( x8 VBEGIN1 b% T8 |6 v5 Z! _
    SELECT @encodedString = REPLACE(
8 f% I, |' N) h                                    COALESCE(@encodedString, @decodedString),
% X# G* \( r# g                                    SUBSTRING(@decodedString,num,1),
5 Y% T9 `5 {: j% B* I  q/ `# G                                    '%' + SUBSTRING(master.dbo.fn_varbintohexstr(CONVERT(VARBINARY(1),ASCII(SUBSTRING(@decodedString,num,1)))),3,3))4 C% C# u, u" l( T& J2 E0 l1 |, L
    FROM dbo.numbers : V! m" d9 d! X. _
    WHERE num BETWEEN 1 AND LEN(@decodedString) AND SUBSTRING(@decodedString,num,1) like '[^a-zA-Z0-9*-.!_]' ESCAPE '!'0 M! o5 u/ _  a! \3 I5 J5 B
END
1 g" K% P8 v. d0 KELSE5 `0 J  q7 j: V8 W+ `/ ]' l
BEGIN) o- [# l; v9 c. [
    SELECT @encodedString = @decodedString 2 f: W- c$ B( {' T
END
; W' s) K9 G6 K3 c. K3 D& i4 {RETURN @encodedString3 V$ r% ?0 |- Y  W! S$ v' N
END
5 [  c% ^, B: nGO2 ]6 L' I  [% F9 `0 L, Y
该脚本在SQL Server
4 U1 c. }5 P8 {  d- p, g5 @" d/ ~Central上完全可用(需要注册)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则