我正在尝试在SQL Server中创建一个未签名的短数据类型,但到目前为止我所做的只是让它不允许任何负值,这会浪费我存储空间的一半。应该有一些方法来创建自定义数据类型,我自己管理它。我希望能够告诉系统数据类型有两个字节,并以某种方式读回值,以便将其作为ushort读取。有什么想法吗?
好的,Nathan在下面的回答帮助我找到了一个可行的解决方案。因此,当我将未签名的short值存储到数据库时,我只需将其转换为带符号的short。前半部分的值是正确的。如果值为负,我只需要在数字上加65536。最终的选择案例如下:
SELECT case when i >= 0 then i else 65536+i end
FROM MyDatabase.dbo.testDB
这将正确显示我的错误演员无符号短片。谢谢你的帮助。
答案 0 :(得分:1)
编辑:重新阅读后,我看到您正在寻找以2字节数据类型模拟无符号短路(0到65,535)。我没有看到给定MSSQL中的本机类型的方法,除非你自己使用smallint并自己完成数学运算。
这只是一个练习还是你专注于存储空间?空间很便宜!
编辑:显示调整了smallint的示例:
drop table dbo.yak
create table dbo.yak (i smallint identity(-32768, 1), n varchar(1));
go
insert into dbo.yak(n)
values('a'),('b'),('c');
go
select i, (i+32768)+1, n
from dbo.Yak