|
寻找无错误的经过测试的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上完全可用(需要注册) |
|