Ответ 1
Есть два варианта:
- определяемая пользователем скалярная функция
- таблица свойств
В Oracle вы можете сделать это в пакетах - ближайший SQL Server имеет сборки...
Существуют ли какие-либо константы в T-SQL, например, в некоторых других языках, которые предоставляют диапазоны значений max и min таких типов, как int?
У меня есть таблица кодов, в которой каждая строка имеет верхний и нижний столбцы диапазона, и мне нужна запись, представляющая диапазон, в котором верхний диапазон является максимальным значением, которое может удерживать int (вроде хакерской бесконечности). Я бы предпочел не жестко кодировать его и вместо этого использовать что-то вроде SET UpperRange = int.Max
Есть два варианта:
В Oracle вы можете сделать это в пакетах - ближайший SQL Server имеет сборки...
Я не думаю, что есть какие-то определенные константы, но вы могли бы определить их сами, сохраняя значения в таблице или используя скалярную функцию.
Таблица
Настройте таблицу с тремя столбцами: TypeName, Max и Min. Таким образом, вам нужно только заполнить их один раз.
Scalar Valued Function
В качестве альтернативы вы можете использовать скалярные функции GetMaxInt(), например (см. этот fooobar.com/questions/93364/... для реального примера.
Здесь вы можете найти все значения max/min: http://msdn.microsoft.com/en-us/library/ms187752.aspx
Избегайте скалярных функций, таких как чума:
Скалярная проблема производительности UDF
При этом я бы не использовал таблицу из трех столбцов, которую предложил другой человек.
Это приведет к неявным преобразованиям почти везде, где вы его используете.
Вам также придется несколько раз присоединяться к таблице, если вам нужно использовать ее для нескольких типов.
Вместо этого есть столбец для каждого Min и Max каждого типа данных (определенный с использованием его собственного типа данных) и вызывайте их непосредственно для сравнения.
Пример:
SELECT *
FROM SomeTable as ST
CROSS JOIN TypeRange as TR
WHERE ST.MyNumber BETWEEN TR.IntMin AND TR.IntMax