如何在SQL Server 2008中创建自定义数据类型?

时间:2011-09-30 17:00:00

标签: sql sql-server sql-server-2008

我正在尝试在SQL Server中创建一个未签名的短数据类型,但到目前为止我所做的只是让它不允许任何负值,这会浪费我存储空间的一半。应该有一些方法来创建自定义数据类型,我自己管理它。我希望能够告诉系统数据类型有两个字节,并以某种方式读回值,以便将其作为ushort读取。有什么想法吗?

最终解决方案:

好的,Nathan在下面的回答帮助我找到了一个可行的解决方案。因此,当我将未签名的short值存储到数据库时,我只需将其转换为带符号的short。前半部分的值是正确的。如果值为负,我只需要在数字上加65536。最终的选择案例如下:

SELECT case when i >= 0 then i else 65536+i end
  FROM MyDatabase.dbo.testDB

这将正确显示我的错误演员无符号短片。谢谢你的帮助。

1 个答案:

答案 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