いくつかの URL と SQL GUID をいくつかの「短い」URL 形式に短縮したいと考えています。
T-SqlでURLを短縮するためのコードやコードへのリンクはありますか?
いくつかの URL と SQL GUID をいくつかの「短い」URL 形式に短縮したいと考えています。
T-SqlでURLを短縮するためのコードやコードへのリンクはありますか?
私は私の答えを得ました:)
/me はまたもや Google に脱帽です。
つまり、短縮された URL が必要です。だから私はそれをデータベースに挿入して、一意のID番号を取得します。次に、この int/big int を base36 文字列に変換します。
リンク 私は自分のコードを基にしています。
...
CREATE FUNCTION [dbo].[ConvertIntegerToBase36]
(
@IntegerValue INTEGER
)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @Result VARCHAR(100) = '',
@ShortCharacterSet VARCHAR(36) = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
WHILE @IntegerValue > 0 BEGIN
SET @Result = SUBSTRING(@ShortCharacterSet, @IntegerValue % LEN(@ShortCharacterSet) + 1, 1) + @Result;
SET @IntegerValue = @IntegerValue / LEN(@ShortCharacterSet);
END
RETURN @Result
END
...
CREATE FUNCTION [dbo].[ConvertBase36ToInteger]
(
@EncodedValue VARCHAR(MAX)
)
RETURNS INT
AS
BEGIN
-- Decoding encoded-strings to ints: http://dpatrickcaldwell.blogspot.com/2009/05/converting-hexadecimal-or-binary-to.html
DECLARE @Result INTEGER = 0,
@Index INTEGER = 0,
@ShortCharacterSet VARCHAR(36) = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
WHILE @Index < LEN(@EncodedValue)
SELECT @Result = @Result + POWER(LEN(@ShortCharacterSet), @Index) *
(CHARINDEX
(SUBSTRING(@EncodedValue, LEN(@EncodedValue) - @Index, 1)
, @ShortCharacterSet) - 1
),
@Index = @Index + 1;
RETURN @Result
END
HTH。
文字列操作は T-SQL ではうまく機能しないため、これには CLR ストアド プロシージャを使用します。次に、任意の .Net 短縮関数を使用できます。