sql - 在 SQL Server 中将 VarChar 转换为 VarBinary 时出错

标签 sql sql-server database

我需要将 varchar 转换为 varbinary。我正在使用的查询仅适用于某些值。

这个工作正常

SELECT CONVERT (VARBINARY(MAX), 'AFE27AF97DC6', 2)

虽然这个会抛出错误

Error converting data type varchar to varbinary

SELECT CONVERT (VARBINARY(MAX), 'AFEE27AF97DC6', 2)

我需要使用样式 2。

我已经阅读了所有类似的问题,但找不到解决方案。任何想法都会对我有帮助。谢谢!

最佳答案

嗯,AFEE27AF97DC6 短了一个半字节,看起来只接受完整字节。尝试对其进行零填充。例如

SELECT convert(varbinary(max), '0AFEE27AF97DC6', 2)

如果字符串是可变的,您还可以将其包装在 CASE 表达式中,检查字符串的长度是偶数还是奇数。

SELECT convert(varbinary(max),
               CASE
                 WHEN len('AFEE27AF97DC6') % 2 <> 0 THEN
                   concat('0', 'AFEE27AF97DC6')
                 ELSE
                   'AFEE27AF97DC6'
               END,
               2)

(用您的变量替换文字。)

关于sql - 在 SQL Server 中将 VarChar 转换为 VarBinary 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514282/

相关文章:

sql-server - 关闭隐式事务

php - SQL中如何获取一个包含一定数量子字段的字段?

sql - 使用 Join 进行更新并选择最新值

MySQL LIMIT 语句,返回错误的行数

sql - 将数字转换为单词-第一,第二,第三等

mysql 从特定行获取行

java - 数据库项目中线程 "main"java.lang.NullPointerException 中的异常

mysql - 什么数据量被认为对 MySQL 来说太大了?

SQL Server 随机数生成器不是随机的

sql - 查找数据库中某一列有 2 个或多个相同值的行