Tsql 有人有缩短T-Sql代码的URL吗?

Tsql 有人有缩短T-Sql代码的URL吗?,tsql,url-shortener,Tsql,Url Shortener,我想将一些url和sql GUID缩短为一些“短”url格式 是否有人有任何代码或指向某些代码的链接,用于T-Sql中的url缩短?因为字符串操作是T-Sql不太擅长的,所以我会使用CLR存储过程来实现这一点。然后,您可以使用任何.Net缩短功能。我得到了答案:) /我又一次向谷歌致敬 定义 Base36==a-z 0-9 这意味着,我想要一个缩短的url。因此,我将其插入数据库以获取唯一的标识号。然后我将这个int/big int转换为base36字符串 链接我基于我的代码关闭 创建函

我想将一些url和sql GUID缩短为一些“短”url格式


是否有人有任何代码或指向某些代码的链接,用于T-Sql中的url缩短?

因为字符串操作是T-Sql不太擅长的,所以我会使用CLR存储过程来实现这一点。然后,您可以使用任何.Net缩短功能。

我得到了答案:)

/我又一次向谷歌致敬

定义
  • Base36==a-z 0-9
  • 这意味着,我想要一个缩短的url。因此,我将其插入数据库以获取唯一的标识号。然后我将这个int/big int转换为base36字符串

    链接我基于我的代码关闭

  • 创建函数[dbo]。[ConvertBase36ToInteger]
    (
    @EncodedValue VARCHAR(最大值)
    )
    返回整数
    作为
    开始
    --将编码字符串解码为整数:http://dpatrickcaldwell.blogspot.com/2009/05/converting-hexadecimal-or-binary-to.html
    声明@Result INTEGER=0,
    @索引整数=0,
    @ShortCharacterSet VARCHAR(36)='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    而@Index

    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