小编Bri*_*ler的帖子

如何在SQL Server中需要比Datalength更多的字节数时将十进制转换为二进制

Decimal(4,0)需要5个字节才能存储在SQL Server中.这是根据文档说明所有十进制和数字类型精度1-9需要5个字节.该DATALENGTH功能也确认:

select DATALENGTH(convert(Decimal(4,0),256)) result

result
-----------
5

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

但是,当我转换为binary(5)然后返回decimal(4,0)它时截断数据.

DECLARE @myval decimal (4, 0);  
SET @myval = 257;  
SELECT CONVERT(decimal(4,0), CONVERT(varbinary(5), @myval)) result

result
---------------------------------------
1

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

该号码的最后一个字节被删除.但是,如果我转换为二进制(6)或更多...我得到正确的结果:

DECLARE @myval decimal (4, 0);  
SET @myval = 257;  
SELECT CONVERT(decimal(4,0), CONVERT(binary(6), @myval)) result  

result
---------------------------------------
257

(1 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

怎么了?如果我需要存储十进制值的二进制表示,我怎么知道需要多少字节?具体来说,确定将十进制(p,s)转换为二进制(x)所需的最小字节数x的通用公式是什么?

我需要将一些二进制数据封送到服务代理消息中,因此我需要将各种类型的数据转换为二进制字符串.是否有更健壮的方法来存储二进制值,而不是使用强制转换?

sql-server

7
推荐指数
1
解决办法
3688
查看次数

施放给出错误

为什么这个简单的代码会给我一个错误:

将varchar值'3.0'转换为数据类型int时转换失败.

select cast(value as INT)  
from CV3BasicObservation  (nolock)
where value >= 110
Run Code Online (Sandbox Code Playgroud)

sql-server

0
推荐指数
1
解决办法
95
查看次数

标签 统计

sql-server ×2