整数在SQL Server T-SQL中的最大值常量?
在T-SQL中是否有像在其他语言中提供数据types的最大和最小值范围的常量?
我有一个代码表,其中每行都有一个上限和下限范围列,我需要一个条目表示一个范围,其中上限是一个int可以容纳的最大值(有点像hackish infinity)。 我宁愿不要硬编码,而是使用像SET UpperRange = int.Max
有两个选项:
- 用户定义的标量函数
- 属性表
在Oracle中,您可以在软件包中执行它 – 最接近的SQL Server具有程序集…
我不认为有任何已定义的常量,但可以通过将值存储在表中或使用标量值函数来自定义它们。
表
设置有三列的表格:TypeName,Max和Min。 这样你只需要填充一次。
标量值函数
或者,你可以使用标量值函数GetMaxInt()作为例子(见这个StackOverflow的答案为一个真实的例子。
你可以在这里find所有的最大/最小值: http : //msdn.microsoft.com/en-us/library/ms187752.aspx
避免像瘟疫一样的标量函数:
标量UDF性能问题
这就是说,我不会使用另一个人build议的三列表。
这将导致隐含的转换几乎在任何地方使用它。
如果您需要将其用于多种types,则还必须多次join表格。
相反,每个数据types的每个最小值和最大值都有一列(使用自己的数据types定义),然后直接调用它们进行比较。
例:
SELECT * FROM SomeTable as ST CROSS JOIN TypeRange as TR WHERE ST.MyNumber BETWEEN TR.IntMin AND TR.IntMax