2015-10-16 86 views
1

我想驗證存儲在變量中的字符串是否是有效的BASE64字符串,或者不在我的存儲過程中。驗證SQL Server中的BASE64字符串

例如:

declare @source varbinary(max), @encoded varchar(max), @decoded varbinary(max) 
set @source = convert(varbinary(max), 'Hello Base64') 
set @encoded = cast('' as xml).value('xs:base64Binary(sql:variable(''@source''))', 'varchar(max)') 

現在我想驗證@encoded是否具有有效BASE64字符串或沒有。

任何答案將不勝感激。

感謝

回答

1

下面可能更簡單,更容易理解BASE64驗證字符串的方式。

DECLARE @source VARBINARY(MAX) 
DECLARE @encoded VARCHAR(MAX) 
DECLARE @decoded VARBINARY(MAX) 

SET @source = CONVERT(VARBINARY(MAX), 'Hello Base64') 
SET @encoded = CAST('' AS XML).value('xs:base64Binary(sql:variable(''@source''))', 'varchar(max)') 
SET @decoded = CAST('' AS XML).value('xs:base64Binary(sql:variable(''@encoded''))', 'varbinary(max)') 

IF @decoded IS NULL 
BEGIN 
    SELECT 'Invalid BASE64 string' AS BASE64StringValidator 
END 
ELSE IF @decoded IS NOT NULL 
BEGIN 
    SELECT 'Valid BASE64 string' AS BASE64StringValidator 
END 
1

像這樣的東西應該工作:

declare @b64 varchar(max) = 'SGVsbG8gQmFzZTY0' 

select UTF8Encoding 
    ,case when UTF8Encoding is null then 0 else 1 end as Valid from (
select CAST(CAST(N'' as xml).value('xs:base64Binary(sql:variable("@b64"))', 'VARBINARY(MAX)') as varchar(MAX)) UTF8Encoding 
) a 
+0

這也適用於我。謝謝 –