Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to:
SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL analytics endpoint in Microsoft Fabric and Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
BASE64_ENCODE converts the value of a varbinary expression into a Base64-encoded varchar expression.
Transact-SQL syntax conventions
Syntax
BASE64_ENCODE (expression [ , url_safe ] )
Arguments
expression
An expression of type varbinary(n) or varbinary(max).
url_safe
Optional integer literal or expression, which specifies whether the output of the encode operation should be URL-safe. Any number other than 0 evaluates to true. The default value is 0.
Return types
- varchar(8000) if the input is varbinary(n) where
n<= 6000. - varchar(max) if the input is varbinary(n) where
n> 6000. - varchar(max) if the input is varbinary(max).
- If the input expression is
NULL, the output isNULL.
Remarks
The encoded string uses the alphabet from RFC 4648 Table 1 and might include padding. The URL-safe output uses the Base64URL alphabet from RFC 4648 Table 2 and doesn't include padding. This function doesn't add any new line characters.
In each case, the database default collation is used. For more information on the supported collations in Microsoft Fabric, see Tables.
If you set url_safe to true, the generated Base64URL string isn't compatible with SQL Server's XML and JSON Base64 decoders.
Examples
A. Standard BASE64_ENCODE
The following example returns the Base64 encoded value for the © symbol.
SELECT BASE64_ENCODE(0xA9) AS "Encoded © symbol";
Here's the result set.
qQ==
B. BASE64_ENCODE a string
In the following example, a string is Base64 encoded. You must first cast the string to a varbinary.
SELECT BASE64_ENCODE(CAST ('hello world' AS VARBINARY));
Here's the result set.
aGVsbG8gd29ybGQ=
C. BASE64_ENCODE default vs url_safe
In the following example, the first SELECT statement doesn't specify url_safe; however, the second SELECT statement does specify url_safe.
SELECT BASE64_ENCODE(0xCAFECAFE);
Here's the result set.
yv7K/g==
The following example specifies that the output is URL-safe.
SELECT BASE64_ENCODE(0xCAFECAFE, 1);
Here's the result set.
yv7K_g