SQL Server 中数值、浮点数和小数之间的区别

2023-12-01

两者有什么区别numeric, float and decimal数据类型以及在什么情况下应该使用哪些数据类型?

对于任何类型的金融交易(例如薪资领域),首选哪一种?为什么?


use the float or real数据类型only if提供的精度decimal(最多38位)不足

  • 近似数值数据类型(参见表 3.3)不存储指定的精确值for many数字;他们储存极其接近的值的近似值。 (Technet)

  • 避免在 WHERE 子句搜索条件中使用浮点或实数列,尤其是 = 和 运算符。最好将浮点数和实数列限制为 > 或 Technet)

因此,如果满足以下条件,通常选择 Decimal 作为数据类型是最好的选择:

  • 你的号码可以放进去。小数精度是 10E38[~ 38 位]
  • Float 较小的存储空间(也许还有计算速度)对你来说并不重要
  • 需要精确的数字行为,例如在金融应用程序中、在涉及舍入的操作中或在相等检查中。 (Technet)

  1. Exact数字数据类型小数和数字 - MSDN
  • numeric = decimal (5 to 17 bytes)
    • 将映射到 .NET 中的十进制
    • 两者都将 (18, 0) 作为 SQL Server 中的默认(精度、小数位数)参数
    • 标度 = 小数点右侧可存储的最大小数位数。
    • Money(8 字节)和 SmallMoney(4 字节)也是精确数据类型,将映射到 .NET 中的 Decimal 并具有 4 个小数点(MSDN)
  1. 近似数字数据类型浮点数和实数 - MSDN
  • real (4 byte)
    • 将映射到 .NET 中的 Single
    • 实数的 ISO 同义词是 float(24)
  • float (8 byte)
    • 将映射到 .NET 中的 Double

Exact Numeric Data Types Approximate Numeric Data Types

  • All exact无论使用哪种处理器架构,数字类型总是产生相同的结果或数字的大小
  • 提供给浮点数据类型的参数定义了用于存储浮点数据的位数。mantissa浮点数的.
  • 近似数字数据类型通常使用更少的存储空间并具有更快的速度(高达 20 倍),您还应该考虑它们何时在 .NET 中进行转换
  • C#中Decimal、Float、Double有什么区别
  • 十进制与双倍速度
  • SQL Server - .NET 数据类型映射(来自 MSDN)

主要来源 : MCTS 自定进度培训套件(考试 70-433):Microsoft® SQL Server® 2008 数据库开发- 第 3 章 - 表、数据类型和声明性数据完整性第 1 课 - 选择数据类型(指南) - 第 93 页

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 中数值、浮点数和小数之间的区别 的相关文章

  • SQL 删除表并重新创建并保留数据

    在我们最初的设计中 我们搞砸了表中的外键约束 现在表已充满数据 我们无法在不删除表中所有记录的情况下更改它 我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里 然后删除所有记录 更改表并开始将它们添加回来 还有其他 更好 的想法吗
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • 实体框架 - SQL Server 2005 - IIS 服务器日期时间问题

    我正在使用 MVC3 和实体框架 在我的应用程序中 我需要通过 EF 调用 SQL Server 2005 中的存储过程来根据以下内容搜索一些数据datetime传递的参数 在当地环境中一切似乎都运行良好 但是将其托管到 IIS 后 我在尝
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 如何在 SQL Server 存储过程中对用户定义的表类型执行 ForEach?

    XX PROCEDURE dbo XXX X dbo IntType readonly AS BEGIN SET NOCOUNT ON how can I foreach X here and do process individually
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • 计算运行总计时出错(之前期间的累计)

    我有一张桌子 我们称之为My Table有一个Created日期时间列 在 SQL Server 中 我试图提取一个报告 该报告显示历史上有多少行My Table按月在特定时间 现在我知道我可以显示有多少added每个月 SELECT YE
  • 临时表是线程安全的吗?

    我正在使用 SQL Server 2000 它的许多存储过程广泛使用临时表 数据库的流量很大 我担心创建和删除临时表的线程安全性 假设我有一个存储过程 它创建了一些临时表 它甚至可以将临时表连接到其他临时表等 并且还可以说两个用户同时执行存
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • SQL - != 'NULL' 的解释

    我的SSMS代码如下 Select top 50 From FilteredContact Where statuscode 1 and emailaddress1 NULL and telephone1 NULL and address1
  • 如何跨多个表强制执行 CHECK 约束

    我有一个在 Microsoft SQL Server 2012 Express 中记录奶牛繁殖信息的数据库 显然 一头牛只有在出生后才能配种 并且在其一生中可能会配种多次 我需要在我的数据库中强制执行这些约束 我目前已经根据下图安排了一个架
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型
  • VB6+SQL-Server:如何使用 ADODB.Command 执行带有命名参数的查询?

    我一直在尝试使用 ADODB Command 执行参数化查询 我知道我可以使用 对于参数 但我的查询相当大 我真的不想跟踪参数的确切顺序 我尝试了类似以下的操作 objCmd CommandType adCmdText objCmd Com

随机推荐

  • 使用 Rendertron 进行服务器端渲染 - 不带 firebase 的 Angular 5

    我使用 rendertron 作为服务器端渲染的解决方案 下面是 index js 文件 如何执行index js以及在哪里执行 我已经在我的服务器上使用 docker 设置了自己的 redertron 实例 并且我的角度应用程序构建位于
  • 将静脉坐标转换为 GPS

    我正在使用从以下位置导入的真实街道网络打开街道地图用于静脉模拟 例如卢森堡情景来自拉拉 科德卡 现在 为了准备可视化 使用 Google Earth 我想将模拟中的车辆位置从 SUMO 或 OmNET 坐标导出到 GPS 坐标 作为材料 我
  • 在多租户 Web 应用程序中使用事件委托

    我正在使用 asp net Mvc 5 开发一个多租户 n 层 Web 应用程序 在我的服务层中 我为每个重要操作定义自定义事件 并在执行这些操作后引发这些事件 例如 Public event EventHandler EntityCrea
  • Angular $resource.get 可以处理 GET 的数组和非数组吗?

    我可以通过两种方式通过 ID 获取 REST 资源 GET users 1 GET users 1 2 第一个返回单个对象 例如 id 1 name John 而第二个返回一个数组 例如 id 1 name John id 2 name J
  • 无法关闭 X 按钮上的多线程 Tkinter 应用程序

    我的应用程序具有以下结构 import tkinter as tk from threading import Thread class MyWindow tk Frame constructor methods etc def main
  • 不断上传 php $_FILES 错误 = 3(部分上传)

    我正在使用 Yii 框架的 dropzone 扩展来由注册用户上传一些文件 一切正常 但某些用户尝试上传的某些文件返回错误 3 当上传的文件仅部分上传时 就会发生这种情况 file error FILES Project error fil
  • 为什么某些 Typescript 模块名称以字符串形式给出?

    通常 Typescript 模块的声明如下 declare module MyModule 但有时我也看到它 declare module MyModule 我想知道将名称作为字符串给出的目的是什么 我检查了Typescript 文档并发现
  • 防止 WinForms PictureBox 动画 GIF 在处理过程中暂停?

    我有一个带有 2 个控件的表单 控件 1 有多个搜索条件 用户可以单击按钮开始搜索 Control 2 有一个将显示搜索结果的 GridView 还有一个带有动画 Gif 的 PictureBox 控制 1 中有一个方法 该方法有一个嵌套的
  • 如何使用 EF FromSql 编写 In 子句?

    我的条款有未知数量的参数 我该如何编写它才能与 EF Core 一起使用 var formattedValues String Join values Select s gt s var identifierParam new SqlPar
  • 如何在 Haskell 中建模分层数据类型?

    我有很多类型 它们的层次结构存储了一些有用的信息 我试图避免将类型层次结构的知识融入到对其进行操作的函数中 以下是斯坦福自然语言处理的类型依赖的一小段摘录 root root dep dependent aux auxiliary auxp
  • NetLogoBehaviorSpace内存大小限制

    在我的模型中 我使用行为空间来执行多次运行 每次运行都会更改变量 并将输出存储在 csv 中以供以后分析 该模型在前几次迭代中运行良好 但随着数据的增长而速度很快变慢 我的问题是 在行为空间中使用文件刷新会有所帮助吗 或者有办法解决吗 Ch
  • Spine.js 和 Hem:入门

    我成功创建了一个 Spine 应用程序 如 Spine 上所述入门页 然而 Hem 不会自动考虑我的更改 我必须手动构建 我关注的时候也遇到同样的问题联系截屏视频 但这次 Hem 根本不构建 art mac spine contacts a
  • 在一个 Person 中定义多个 URL

    我正在定义一个 Schema orgPerson我的网站上的项目使用微数据 其中大部分是不言自明的 然而 摘要页面上的每个迷你个人资料都有三个 URL 其中一个链接到该人的完整信息ProfilePage 还有 LinkedIn 和 Twit
  • 为什么我们在 Windows 中需要 CURLOPT_SSL_VERIFYPEER

    我将解释一下我的脚本 以便您能够理解我的问题 基本上我做了一个脚本来检查 SOCKS5 是否是live or dead 当我测试我的脚本时Linux VPS and iMac它工作得很好 但是当我在 Windows 上测试它时wampser
  • 全屏相机显示/预览不保持纵横比 - 图像会倾斜、拉伸以适合屏幕

    我开发了一个小应用程序 用于全屏显示相机预览 我为此使用相机 API 这是活动布局
  • JPA或Hibernate生成一个(非主键)列值,不从1开始

    我想要一个 JPA Hibernate 最好是 JPA 注释 它可以生成列的值 该值不是主键 并且不是从 1 开始 据我所知 JPA 无法使用 GenerateValue SequenceGenerator 和 TableGenerator
  • 从数字数组中获取一个数字

    要将数字拆分为给定基数的数字 Julia 有 digits 功能 julia gt digits 36 base 4 3 element Array Int64 1 0 1 2 逆向操作是什么 如果你有一个数字数组和基数 是否有一个buil
  • PHP 使用 file_get_contents 后替换字符串

    您好 我正在寻找替换我正在加载的 html 电子邮件中的单词文件获取内容 这是我的代码 我希望找到所有 SAD 模式 区分大小写 并用 HAPPY 替换它们 由于某种原因如果我使用文件获取内容它似乎
  • 使用plotly python绘制多个箭头

    有一个关于的例子多个注释 它只是复制 go layout Annotation 来绘制 2 个箭头 但我需要画100多个箭头 我不知道怎么做 go layout Annotation 是元组类型并接受每个箭头的 dict 是否有任何简单的方
  • SQL Server 中数值、浮点数和小数之间的区别

    两者有什么区别numeric float and decimal数据类型以及在什么情况下应该使用哪些数据类型 对于任何类型的金融交易 例如薪资领域 首选哪一种 为什么 use the float or real数据类型only if提供的精