首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在MariaDB 10.1+中如果ifnull()返回DECIMAL而不是BIGINT?

在MariaDB 10.1+中,如果ifnull()函数返回DECIMAL而不是BIGINT,这是因为MariaDB在处理ifnull()函数时进行了优化和改进。

ifnull()函数用于判断一个表达式是否为NULL,如果为NULL,则返回指定的替代值。在MariaDB 10.1+之前的版本中,ifnull()函数的返回类型是根据第一个参数的类型来确定的。如果第一个参数是BIGINT类型,那么ifnull()函数的返回类型也是BIGINT。

然而,这种设计可能会导致一些问题。在实际应用中,有时我们希望ifnull()函数的返回类型与第一个参数的类型无关,而是根据替代值的类型来确定。因此,在MariaDB 10.1+中,ifnull()函数的返回类型被改为根据替代值的类型来确定。

这样做的好处是可以更灵活地处理不同类型的数据。例如,如果我们希望将一个DECIMAL类型的字段替代为一个BIGINT类型的值,那么在MariaDB 10.1+中,ifnull()函数可以直接返回一个DECIMAL类型的值,而不需要进行类型转换。

总结起来,MariaDB 10.1+中ifnull()函数返回DECIMAL而不是BIGINT的原因是为了提供更灵活和准确的数据处理方式,使得开发人员可以更方便地处理不同类型的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明

(order_id BIGINT PRIMARY KEY, # 订单ID user_id BIGINT, # 用户ID total_price DECIMAL(9,4), # 交易价格...VALUES(100001, 1001, 99, 10); INSERT INTO profit_sharing VALUES(100002, 1002, 90, 5); # 场景1:存储过程的每个查询语句都只返回一条记录...), #并将记录各项的值赋值给变量variable1,variable2,......, # 注意,当存储过程参数如果用于存储过程,表查询语句的WHERE子句,作为筛选条件值时,如果未指定要查询表的表别名,则不能和表的列名相同,参见如下 account_init BIGINT,...INTO variable1, ...; 如果column1和variable1名称不可以相同,否则取不到值,variable1最终的值为NULL(MariaDB下测试 # 验证金额增减的准确性

1.1K40
  • 【面试说】聊聊JavaScript的数据类型

    typeof null 为什么是 object? 为什么 ES6 要提出 Symbol? BigInt 解决了什么问题? 为什么 0.1 + 0.2 !== 0.3? 你如何解决这个问题?...这个议案JS引入新的原生类型:decimal(后缀m),声明这个数字是十进制运算。... JavaScript 中最大的值为 2^53。 `BigInt`[4] 任意精度数字类型,已经进入stage3规范。BigInt 可以表示任意大的整数。...每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object type],其中 type 为对象的类型 const a = ['Hello...== 0.3,即将成为过去[9] [译]BigInt:JavaScript 的任意精度整型[10] ECMAScript 6 入门[11] JavaScript,如何判断数组是数组?

    53220

    MySQL 简介

    所谓的关系型数据库,是建立关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库的数据。...代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区维护,采用 GPL 授权许可。...注意:如果 DATETIME 类型的值没有时间部分,默认时间为 00:00:00。时间日期比较可以用 = 号。 date 和 datetime 插入的时候可以用 NOW() 函数。...5.0.3 及以上的版本,varchar 数据类型的长度支持到了 65535,也就是说可以存放 65532 个字节(注意是字节不是字符!)...的数据(起始位和结束位占去了3个字节),也就是说, 5.0.3 以下版本需要使用固定的 TEXT 或 BLOB 格式存放的数据可以高版本中使用可变长的 varchar 来存放,这样就能有效的减少数据库文件的大小

    58910

    Mysql必知必会!

    存储或检索过程不进行大小写转换。 BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串不要非二进制字符串。也就是说,它们包含字节字符串不是字符字符串。...查询返回的结果集是一张 虚拟表。...如果sal或comm中有一个字段不是数值类型,那么会出错 SELECT *,sal+comm FROM emp; image comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL...,如果指定列是字符串类型,那么使用字符串排序运算; SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为...,where是分组前对数据进行过滤 2. having后面可以使用聚合函数(统计函数),where后面不可以使用聚合函数 WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组

    1.9K00

    使用spark与MySQL进行数据交互的方法

    项目中,遇到一个场景是,需要从Hive数据仓库拉取数据,进行过滤、裁剪或者聚合之后生成中间结果导入MySQL。 对于这样一个极其普通的离线计算场景,有多种技术选型可以实现。...然后将数据以SaveMode.Append的方式,写入了mysql的accounts表。 SaveMode.Append方式,数据会追加,不会覆盖。...如果想覆盖,还有一个常用的SaveMode.Overwrite。推荐这样一篇博客。 最终accounts的数据有1000000条,百万。...db2db db2db从刚刚生成的MySQL表accounts读取出数据,也是返回了一个dataframe对象,通过执行where过滤除了其中id<1000的数据,这里正好是1000条。...细心的你可能已经注意到了,hive里的string类型,到了MySQL变成了Text。有个兄弟说,如果你手动创建了表,并且字段设置为String会报错,我没有试,只是记录了一下。

    6K90

    配置查询与线程追踪函数|全方位认识 sys 系统库

    找匹配记录不管该帐号是否mysql.user表存在,如果在setup_actors表开启了任意帐号的监控,那么就算在mysql.user不存在的用户,也会返回YES 函数定义语句文本 DROP...consumers都启用时才会返回该consumers为YES,不仅仅是返回该指定的consumersperformance_schema.setup_consumers表的enabled字段值设置...ID值performance_schema.threads表未查询到,则返回UNKNOWN值,如果给定ID值为NULL则返回NULL 参数: in_connection_id BIGINT UNSIGNED...则使用第二个传参返回(如果在sys.sys_config表没有查询到第一个传参的变量名---即可能传入的配置选项名称sys.sys_config表不存在,返回第二个传参值) 按照惯例,调用者sys_get_config...如果存在所需配置选项的自定义变量,且值不为NULL,该调用者直接使用自定义配置选项变量值不是第哦啊用sys_get_config()函数读取sys.sys_config表的值,除此之外,其他情形都需要调用

    1.8K30

    有关SQL的面试题

    BIGINT COMMENT’访问时间戳 单位s’, scene BIGINT COMMENT’进入应用的场景’, sessionid STRING COMMENT’单次访问会话id’,...insert进该表 问题:求每个用户id最早一次访问不同落地页的日期(注意表B数据量大,思考如何在10分钟内将数据跑出) 首先,我的SQL不是很好,但还是尽量解决。...Salary from Employee order by Salary desc # 升序排序 limit N,1), # N是索引,返回一个...user_id) desc limit 9,1) order by visit_time desc limmit 1 group by ds 第二题的思路 第二题我们可以来想象一个简单的案例,如果我每天都写博客...ElasticSearch我也慢慢啃。 如何提高SQl 推荐经典的SQL实例一书,美国老大写的,我有时也看看回顾回顾 ? leetcode 刷起来 (别这么猛,狗命要紧)

    73720

    smallint是sql的数据类型吗_char数据类型

    注释 支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况, 当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。... SQL Server , int 数据类型是主要的整数数据类型。 在数据类型优先次序表bigint 位于 smallmoney 和 int 之间。...只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动 将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。...因此,查询的类似表达式有时可能会生成不同的结果。 如果查询不是自动参数化的, 则将常量值转换为指定的数据类型之前,首先将其转换为 numeric,该数据类型的精度很大 足以保存常量的值。...大于 2,147,483,647 的整数常量将转换为decimal 数据类型,不是 bigint 数据类型。 下面的示例显示当超过此阈值时,结果的数据类型将从 int 变为 decimal

    60230

    小面试官教你 MySQL——简介和功能

    Wikipedia 说得很夸张:虽然有这一标准的存在,但大部分的SQL代码不同的数据库系统并不具有完全的跨平台性。...比如 MySQL 5.7 开始支持 JSON, MariaDB 并没有支持。...对于所有数字类型都是这样的 SMALLINT(n) 双字节整型 即 “字” INT(n) 四字节整型 BIGINT(n) 八字节整型 BOOL(n) 布尔型 MySQL 实际上是使用 SMALLINT...括号的数字不实际影响数据的存储,只影响展示 DOUBLE(m,d) 八字节浮点数 DECIMAL(m,b) 定点数 MySQL ,定点数实际上是使用 string 的模式来存储的 所有的整型数据类型默认为有符号类型...--- MySQL 操作 MySQL 的常用操作我之前的一篇文章作为笔记记了一下,读者可以参阅:MySQL/MariaDB 语句速查笔记 --- 参考资料 SQL - 维基百科 MySQL - 维基百科

    1.6K40

    深入浅出MySQL:从零开始掌握建表规约

    hello,大家好,我是千羽 MySQL 是一款广泛使用的开源数据库管理系统,它以高性能、易用性和稳定性著称。无论是初创公司还是大型企业,都依赖 MySQL 来管理和存储数据。...一、为什么需要建表规约? 开始详细介绍 MySQL 的建表规约之前,我们需要先了解为什么需要遵循这些规约。以下是几个关键原因: 统一规范:有助于团队协作,确保代码和数据库结构的一致性和可读性。...说明:float 和 double 存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。 7....冗余字段应遵循: 不是频繁修改的字段。 不是 varchar 超长字段,更不能是 text 字段。...主键索引使用 id,并且 id 字段类型为 unsigned bigint,自动增长。 金额使用 decimal 类型,避免了精度损失。

    6710
    领券