Подтвердить что ты не робот

Integer Максимальные значения констант в SQL Server T-SQL?

Существуют ли какие-либо константы в T-SQL, например, в некоторых других языках, которые предоставляют диапазоны значений max и min таких типов, как int?

У меня есть таблица кодов, в которой каждая строка имеет верхний и нижний столбцы диапазона, и мне нужна запись, представляющая диапазон, в котором верхний диапазон является максимальным значением, которое может удерживать int (вроде хакерской бесконечности). Я бы предпочел не жестко кодировать его и вместо этого использовать что-то вроде SET UpperRange = int.Max

4b9b3361

Ответ 1

Есть два варианта:

  • определяемая пользователем скалярная функция
  • таблица свойств

В Oracle вы можете сделать это в пакетах - ближайший SQL Server имеет сборки...

Ответ 2

Я не думаю, что есть какие-то определенные константы, но вы могли бы определить их сами, сохраняя значения в таблице или используя скалярную функцию.

Таблица

Настройте таблицу с тремя столбцами: TypeName, Max и Min. Таким образом, вам нужно только заполнить их один раз.

Scalar Valued Function

В качестве альтернативы вы можете использовать скалярные функции GetMaxInt(), например (см. этот fooobar.com/questions/93364/... для реального примера.

Здесь вы можете найти все значения max/min: http://msdn.microsoft.com/en-us/library/ms187752.aspx

Ответ 3

Избегайте скалярных функций, таких как чума:
   Скалярная проблема производительности UDF

При этом я бы не использовал таблицу из трех столбцов, которую предложил другой человек.
Это приведет к неявным преобразованиям почти везде, где вы его используете.
Вам также придется несколько раз присоединяться к таблице, если вам нужно использовать ее для нескольких типов.

Вместо этого есть столбец для каждого Min и Max каждого типа данных (определенный с использованием его собственного типа данных) и вызывайте их непосредственно для сравнения.

Пример:

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