【问题标题】:Validate BASE64 string in SQL Server在 SQL Server 中验证 BASE64 字符串
【发布时间】:2015-10-16 14:00:53
【问题描述】:

我想验证存储在变量中的字符串在我的存储过程中是否是有效的 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 字符串。

任何答案将不胜感激。

谢谢

【问题讨论】:

    标签: sql-server sql-server-2008-r2 sql-server-2012


    【解决方案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
    

    【讨论】:

    • 不幸的是,当您的值不违反解码 base64 的规则时,这将产生误报。例如,Player11
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多