Existe-t-il des constantes dans T-SQL comme dans d'autres langages qui fournissent les plages de valeurs max et min de types de données tels que int?
J'ai une table de codes où chaque ligne a une colonne de plage supérieure et inférieure, et j'ai besoin d'une entrée qui représente une plage où la plage supérieure est la valeur maximale qu'un int peut contenir (un peu comme un infini hackish). Je préfère ne pas le coder en dur et utiliser à la place quelque chose comme SET UpperRange = int.Max
Il y a deux options:
Dans Oracle, vous pouvez le faire dans les packages - le SQL Server le plus proche est les assemblys ...
Je ne pense pas qu'il existe de constantes définies, mais vous pouvez les définir vous-même en stockant les valeurs dans une table ou en utilisant une fonction de valeur scalaire.
Tableau
Configurez une table qui comporte trois colonnes: TypeName, Max et Min. De cette façon, vous ne devez les remplir qu'une seule fois.
Fonction de valeur scalaire
Alternativement, vous pouvez utiliser des fonctions à valeurs scalaires GetMaxInt () par exemple (voir ceci réponse StackOverflow pour un exemple réel.
Vous pouvez trouver toutes les valeurs max/min ici: http://msdn.Microsoft.com/en-us/library/ms187752.aspx
Évitez les fonctions scalaires comme la peste:
Problème de performance UDF scalaire
Cela étant dit, je n'utiliserais pas la table à 3 colonnes suggérée par une autre personne.
Cela entraînerait des conversions implicites à peu près partout où vous l'utiliseriez.
Vous devrez également vous joindre à la table plusieurs fois si vous devez l'utiliser pour plusieurs types.
Ayez à la place une colonne pour chaque min et max de chaque type de données (défini en utilisant son propre type de données) et appelez-les directement pour comparer.
Exemple:
SELECT *
FROM SomeTable as ST
CROSS JOIN TypeRange as TR
WHERE ST.MyNumber BETWEEN TR.IntMin AND TR.IntMax