SQL Server’da Yazıyı Base64’e Encode Eden Fonksiyon
Herkese merhaba,
Bu yazıda SQL Server’da yazıyı Base64’e encode eden fonksiyon ile ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda yazıyı Base64’e encode etmek isteyebilirsiniz.
Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
CREATE FUNCTION [dbo].[fnBase64Encode]
(
@plain_text VARCHAR(6000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
--local variables
DECLARE @output VARCHAR(8000),
@input_length INTEGER,
@block_start INTEGER,
@partial_block_start INTEGER, -- position of last 0, 1 or 2 characters
@partial_block_length INTEGER,
@block_val INTEGER,
@map CHAR(64);
SET @map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
--initialise variables
SET @output = '';
--set length and count
SET @input_length = LEN(@plain_text + '#') - 1;
SET @partial_block_length = @input_length % 3;
SET @partial_block_start = @input_length - @partial_block_length;
SET @block_start = 1;
--for each block
WHILE @block_start < @partial_block_start
BEGIN
SET @block_val = CAST(SUBSTRING(@plain_text, @block_start, 3) AS BINARY(3));
--encode the 3 character block and add to the output
SET @output
= @output + SUBSTRING(@map, @block_val / 262144 + 1, 1) + SUBSTRING(@map, (@block_val / 4096 & 63) + 1, 1)
+ SUBSTRING(@map, (@block_val / 64 & 63) + 1, 1) + SUBSTRING(@map, (@block_val & 63) + 1, 1);
--increment the counter
SET @block_start = @block_start + 3;
END;
IF @partial_block_length > 0
BEGIN
SET @block_val
= CAST(SUBSTRING(@plain_text, @block_start, @partial_block_length)
+ REPLICATE(CHAR(0), 3 - @partial_block_length) AS BINARY(3));
SET @output
= @output + SUBSTRING(@map, @block_val / 262144 + 1, 1) + SUBSTRING(@map, (@block_val / 4096 & 63) + 1, 1)
+ CASE
WHEN @partial_block_length < 2 THEN
REPLACE(SUBSTRING(@map, (@block_val / 64 & 63) + 1, 1), 'A', '=')
ELSE
SUBSTRING(@map, (@block_val / 64 & 63) + 1, 1)
END + CASE
WHEN @partial_block_length < 3 THEN
REPLACE(SUBSTRING(@map, (@block_val & 63) + 1, 1), 'A', '=')
ELSE
SUBSTRING(@map, (@block_val & 63) + 1, 1)
END;
END;
--return the result
RETURN @output;
END;
---Kullanımı
SELECT dbo.fnBase64Encode('Yavuz Selim Kart') AS Base64
Yukarıdaki kodu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere yazıyı Base64’e encode etmiş olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.