在T-SQL中是否有任何常量,例如在其他一些语言中提供数据类型的最大值和最小值范围,例如int?
我有一个代码表,其中每一行都有一个上下范围列,我需要一个表示一个范围的条目,其中上限是int可以容纳的最大值(有点像一个hackish无穷大)。我不想硬编码,而是使用像SET UpperRange = int.Max
答案 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