Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

बहु-आधार रूपांतरण - URL शॉर्टनर के लिए सभी संयोजनों का उपयोग करना

मैं रूपांतरण करने में कामयाब रहा। मुश्किल बात यह है कि यह केवल मिश्रित आधार रूपांतरण नहीं है, पहले वर्ण का उच्च आधार भी लंबे कोड के मूल्यों को प्रभावित करता है।

मैंने एक आसान मामले से शुरुआत की; बेस -10 कोड। मैंने देखा कि दो अंकों की श्रेणी में 10 अतिरिक्त कोड हैं, तीन अंकों की श्रेणी में 100 अतिरिक्त कोड हैं, और इसी तरह:

0 - 9        : '0' - '9'
10 - 109     : '00' - '99'
110 - 1109   : '000' - '999'
1110 - 11109 : '0000' - '9999'

इसलिए, कोड में पहले वर्ण का मान न केवल स्थिति के लिए उठाया गया आधार है, बल्कि इसकी एक ऑफसेट भी है।

बेस -62 एन्कोडिंग में इसे लागू करने के बाद, मैंने यही समाप्त किया:

create function tiny_Encode(@UrlId int) returns varchar(10)
as
begin

  declare
    @Chars varchar(62),
    @Code varchar(10),
    @Value int,
    @Adder int

  set @Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  if (@UrlId < 63) begin
    set @Code = substring(@Chars, @UrlId, 1)
  end else begin
    set @UrlId = @UrlId - 1
    set @Value = 62
    set @Adder = 0
    while (@UrlId >= @Value * 63 + @Adder) begin
      set @Adder = @Adder + @Value
      set @Value = @Value * 62
    end
    set @Code = substring(@Chars, (@UrlId - @Adder) / @Value, 1)
    set @UrlId = ((@UrlId - @Adder) % @Value)
    while (@Value > 1) begin
      set @Value = @Value / 62
      set @Code = @Code + substring(@Chars, @UrlId / @Value + 1, 1)
      set @UrlId = @UrlId % @Value
    end
  end
  return @Code

end



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया, बाएं जुड़ने से मुझे डुप्लिकेट पंक्तियां मिलती हैं, लेकिन मुझे एक ही आईडी के साथ प्रत्येक रिकॉर्ड के लिए शीर्ष (1) पंक्ति चाहिए

  2. एसक्यूएल सर्वर ट्रिगर सहायता - एक ही टेबल अपडेट

  3. एक इकाई फ्रेमवर्क मॉडल बनाना कई डेटाबेस फैलाता है

  4. ऐसे मान कैसे प्राप्त करें जिनमें SQL सर्वर में संख्याएँ नहीं हैं

  5. रूपांतरण विफलता में ISNUMERIC परिणामों के साथ व्युत्पन्न तालिका का उपयोग करने वाली क्वेरी (varchar to int)