整数SQL Server T-SQL中的最大值常量?

时间:2010-04-29 20:45:39

标签: sql sql-server sql-server-2005 tsql

在T-SQL中是否有任何常量,例如在其他一些语言中提供数据类型的最大值和最小值范围,例如int?

我有一个代码表,其中每一行都有一个上下范围列,我需要一个表示一个范围的条目,其中上限是int可以容纳的最大值(有点像一个hackish无穷大)。我不想硬编码,而是使用像SET UpperRange = int.Max

这样的东西

3 个答案:

答案 0 :(得分:12)

有两种选择:

  • 用户定义的标量函数
  • 属性表

在Oracle中,您可以在Packages中执行此操作 - 最接近的SQL Server具有Assemblies ...

答案 1 :(得分:8)

我认为没有任何已定义的常量,但您可以通过将值存储在表中或使用标量值函数来自己定义它们。

设置一个包含三列的表:TypeName,Max和Min。这样你只需填充一次。

标量值函数

或者你可以使用标量值函数GetMaxInt()作为一个真实的例子来看这个StackOverflow answer

您可以在此处找到所有最大/最小值:http://msdn.microsoft.com/en-us/library/ms187752.aspx

答案 2 :(得分:3)

避免标量 - 像瘟疫一样的功能:
    Scalar UDF Performance Problem

话虽如此,我不会使用另一个人建议的3柱表 这会导致您使用它的任何地方的隐式转换 如果您需要将它用于多种类型,您还必须多次加入该表。

而是为每个数据类型的每个最小值和最大值(使用它自己的数据类型定义)添加一列,并直接调用它们进行比较。

例如:

SELECT *
  FROM SomeTable as ST
  CROSS JOIN TypeRange as TR
  WHERE ST.MyNumber BETWEEN TR.IntMin  AND TR.IntMax