【问题标题】:What does "numeric precision radix" mean in the SQL Server metadata?SQL Server 元数据中的“数字精度基数”是什么意思?
【发布时间】:2015-03-04 00:18:47
【问题描述】:

我正在浏览 SQL Server Management Studio 对象资源管理器:元数据。在 TempDb > Views > System Views > Columns 对象下,我找到:“Numeric Precision Radix”。我知道基数的含义(二进制、十进制、十六进制等)以及数值精度的含义(数字表示中有多少位,以及比例:小数点之后有多少位)。

但是元数据本身(数值精度)怎么会有基数(编码系统)呢?就像说油漆罐是什么颜色的?

为什么我在任何地方都找不到这个短语的描述?谢谢。

【问题讨论】:

标签: sql-server radix


【解决方案1】:

我相信Numeric_Precision_Radix 是在 SQL-99 标准指定的 Information_Schema.Columns 表中指定的。

每个 DBMS 都会有所不同。 根据这个link它被指定为:

如果 data_type 标识数字类型,则此列指示其中 基于 numeric_precision 和 numeric_scale 列中的值是 表达。该值为 2 或 10。对于所有其他数据类型, 此列为空。

对于 SQL Server,intmoneydecimal 为 10,floatreal 为 2。请参见下面的示例,其中基数为 2 且精度为 53 的浮点数,这意味着它精确到 53 位信息。

换句话说,int 精度用 10 的 10 次方表示,但实际上它表示为 2 的 53 次方。

参见维基link here

SQL Fiddle

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'

Results

| 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) |

【讨论】:

  • 哇。人们有太多的想法要考虑。我想我认为 Decimal 表示以 10 为底,而 Float 表示以 2 为底是固有的。有没有其他选择或其他合理的方案?这只是给百合镀金吗?除了 10 和 2 之外,还会有任何基数吗?基数 64?
猜你喜欢
  • 1970-01-01
  • 2015-03-17
  • 2021-05-02
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多