Что означает система счисления точности в метаданных SQL Server?

Я просматриваю обозреватель объектов SQL Server Management Studio: метаданные. В объекте TempDb> Views> System Views> Columns я нахожу: «Система счисления точности». Я знаю, что означает система счисления (двоичная, десятичная, шестнадцатеричная и т. д.) и что означает числовая точность (сколько цифр в представлении числа и шкала: сколько цифр после точки счисления).

Но как метаданные сами (числовая точность) могут иметь основание (систему кодирования)? Это все равно, что сказать, какого цвета банка краски?

И почему я нигде не могу найти описание этой фразы? Спасибо.


person Community    schedule 03.03.2015    source источник
comment
На самом деле вы можете найти описание в BOL: msdn.microsoft.com/en-us /библиотека/ms188348.aspx   -  person Pred    schedule 03.03.2015


Ответы (1)


Я считаю, что Numeric_Precision_Radix указано в таблице Information_Schema.Columns, как указано в стандарте SQL-99.

Для каждой СУБД он будет разным. согласно этой ссылке это указано как:

Если data_type идентифицирует числовой тип, этот столбец указывает, в какой базе выражены значения в столбцах numeric_precision и numeric_scale. Значение равно 2 или 10. Для всех других типов данных этот столбец пуст.

Для SQL Server это 10 для int, money и decimal и 2 для float и real. См. ниже, например, где для числа с плавающей запятой, где основание равно 2, а точность равна 53, что означает, что он точен до 53 битов информации.

Другими словами, для int точность выражается числом 10 в 10-й степени, но для реального числа она выражается как 2 в 53-й степени.

См. вики ссылка здесь

скрипт SQL

Настройка схемы MS SQL Server 2008:

CREATE TABLE MyRadix
(
    aInt int,
    bFloat float,
    cMoney Money,
    dDecimal Decimal(12,10),
    eReal Real
)

Запрос 1:

SELECT COLUMN_NAME, DATA_TYPE, NUMERIC_PRECISION_RADIX, NUMERIC_PRECISION, NUMERIC_SCALE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MyRAdix'

Результаты:

| COLUMN_NAME | DATA_TYPE | NUMERIC_PRECISION_RADIX | NUMERIC_PRECISION | NUMERIC_SCALE |
|-------------|-----------|-------------------------|-------------------|---------------|
|        aInt |       int |                      10 |                10 |             0 |
|      bFloat |     float |                       2 |                53 |        (null) |
|      cMoney |     money |                      10 |                19 |             4 |
|    dDecimal |   decimal |                      10 |                12 |            10 |
|       eReal |      real |                       2 |                24 |        (null) |
person Steve Ford    schedule 03.03.2015
comment
Ух ты. Людям нужно слишком много думать. Я думаю, я думал, что это естественно, что Decimal означает основание 10, а Float означает основание 2. Существуют ли какие-либо альтернативы или другие разумные сценарии? Это просто позолота лилии? Могут ли быть какие-либо Radix кроме 10 и 2? База 64? - person ; 03.03.2015