场景 导出的数值单元格格式是文本。 客户每次都要手动转为数值,往往一个表格就是好多万数据,转换起来等半天。 解决方案 听说@Excel 设置type=10即可 POM引入easyPoi相关的: 应用: 需要注意的是: 如果format成 【#,##0,00】有可能提示字符串转换异常的。如下图: 解决方案:修改format格式。...easyPOI支持的format格式如下: easypoi支持的自定义格式列表 BuiltinFormats类的_formats列表里的自定义格式才有效,否则就会使用文本格式。
背景 今天出现了一个bug,在数据库中我们将订单表中的order_no从之前的bigint(20)改成varchar(20)后,原有的代码逻辑在进行时查询时,之前是以Long类型传参查询的。...根源 mysql5.7 查询varchar类型的数据时,不加引号,触发隐式转换导致的查询结果错误。...也同样符合 如何检测string类型的数字转成doule类型是否溢出呢?...这里经过测试,当数字超过16位以后,转成double类型就已经不准确了,例如20402702611292711会表示成20402702611292712(如图中val1) MySQL string转成...、in参数包含多个类型、字符集类型或校对规则不一致等 隐式类型转换可能导致无法使用索引、查询结果不准确等,因此在使用时必须仔细甄别 数字类型的建议在字段定义时就定义为int或者bigint,表关联时关联字段必须保持类型
大家好,又见面了,我是你们的朋友全栈君。 本节内容: mysql字符与数字转换的方法 1,将字符的数字转成数字,比如’0’转成0可以直接用加法实现。...例如:将pony表中的d 进行排序,可d的定义为varchar: 复制代码 代码示例: select * from pony order by (d+0) 2,在进行ifnull处理时,比如 ifnull...: 1,可用的类型 2,二进制,同带binary前缀的效果 : BINARY 3,字符型,可带参数 : CHAR() 4,日期 : DATE 5,时间: TIME 6,日期时间型 : DATETIME...复制代码 代码示例: mysql> SELECT CONCAT(‘hello you ‘,2); -> ‘hello you 2’ MySQL supports arithmetic with both...As of MySQL 5.0.4, they also produce a warning. 有关MYSQL字符与数字转换的方法,就介绍这些吧,希望对大家有所帮助。
mysql 中 "非数字"=0 衡为true SELECT "jlkfdsfad"=0 TRUE SELECT "jlkfdsfad"=1 FALSE SELECT "131231"=0
题目 Numbers 表保存数字的值及其频率。...1 | | 2 | 3 | | 3 | 1 | +----------+-------------+ 在此表中,数字为...+--------+ | median | +--------| | 0.0000 | +--------+ 请编写一个查询来查找所有数字的中位数并将结果命名为 median 。...解题 求出正序、逆序的前缀频数和 select Number, sum(Frequency) over(order by Number asc) presum from Numbers {"headers...(前缀频数大于等于一半的第一个满足的数),最后求平均 # Write your MySQL query statement below select avg(Number) median from (
一、mysql查询的五种子句 where(条件查询)、having(筛选)、group by(分组)、order by(排序)、limit(限制结果数) 1、where常用运算符...select name,score<60 from stu; #这里score<60是判断语句,所以结果为真或假,mysql中真为...#把上面的查询结果理解为一个临时表[存在于内存中]【子查询】 #再从临时表中选出每个栏目最贵的商品 select * from (select goods_id...,看是否成立 2、字段(列),理解为变量,可以进行运算(算术运算和逻辑运算) 3、 取出结果可以理解成一张临时表 二、mysql子查询...,【即左右连接的结果去除null项后的并集(去除了重复项)】 mysql目前还不支持 外连接(即左右连接结果的并集,不去除null项) 语法:select n1,n2,n3
mysql float字段类型数据查询为空问题 作者:matrix 被围观: 224 次 发布时间:2021-12-28 分类:mysql PHP | 无评论 » 结论 不要用float、double...普通的查询没问题,个别数据就出现查询为空的问题。后来发现都是浮点类型数据,排查框架的sql日志到PDO的参数绑定找遍了都没找到根源。...$this->PDOStatement->bindValue(':ThinkBind_1_', 51.6, PDO::PARAM_STR) 虽然字段设置了精度float(10,2),但是依然有查询为空出现...这就是float精度导致的问题。 吐槽 TP5.1 sql日志输出不准确,和实际执行的不一致!...sql输出日志为where wi=51.6,实际上执行是where wi="51.6",这也增加了排查的难度。
最近公司的系统一点点的开始了拆分,从ORACLE 转移到 MYSQL 中,部分程序员的想法在使用MYSQL中还是没有转变过来,直接将ORALCE中的查询语句直接搬到了MYSQL。...这就直接抛出一个问题,就是MYSQL的查询技巧还重要吗?当然如果你还要用MYSQL 来进行数据库的提取和查询,那就必须重视MYSQL的查询技巧。...下图是以 mysql 8.015 这个版本作为语句执行的基础 其实两条语句查询的结果是一样的,仅仅是写法不一样,给出的执行计划就是不一样的 以目前最新版本的MYSQL来说,从上面的例子里面,还是要鼓励直接查询...最后,我们看看MYSQL 8.0的并行查询,并行查询,其实在 PG, SQL SERVER , ORACLE 中都有,但形式不同,MYSQL 8 之前是没有并行查询这个概念的,MYSQL 8 引入了并行查询...首先我们将并行度降低到 1 ,默认是 4 查询后,获得的时间是 0.109秒 然后我们将并行度调整为 6 在次查询,获得的时间是 0.062秒 由此可见并行度这个东西,对于查询是有帮助的,尤其count
mysql 的连接查询 内连接 左连接 右连接 全连接 首先创建两张表,一个student_table,一个salary。表名起的不是合乎情景,就这样吧。...*,b.* from student_table a inner join salary b on a.id = b.sid; -- 内连接 得到的查询结果是 可以发现这个查询的显示就是根据id...是的,效果是一样的,但是其实是不一样的,左连接会以左表为基准,左边表的数据都会显示,没有匹配到的数据会被设置为null。...全连接会全部作为基准,相对的没有匹配到的也会同样的设置为null,但是我们的salary作为基准的时候左表是完全匹配的,所以不会出现null。...然后再次进行一次全连接查询。
对于树结构的查询,在oracle数据库中有现成的函数直接调用,但是在mysql中这部分没有现成的函数可以直接调用,对于树形结构的递归遍历在实际业务中也是非常常见的。...本小节做一个记录 向下递归查询 SELECT ID.LEVEL, DATA.* FROM ( SELECT @ids AS _ids, ( SELECT @ids := GROUP_CONCAT
1、查看mysql的慢查询日志是否开启 show variables like ‘%query%’; 可以看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。...log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询。 2、如何启用慢查询日志呢?...3、指定日志的输出格式 MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式: show variables like ‘%log_output%’; 设置输出格式: set...global log_output=’FILE’; set global log_output=’TABLE’; set global log_output=’FILE,TABLE’; 4、测试 因为我们的超时时间设置为...select sleep(11); 查看TABLE记录的慢日志: select * from mysql.slow_log; 这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息
我们都知道在数据库查询时,索引可以极大的提高查询效率。通常在使用的时候,都会针对频繁查询的关键字段建立索引。...比如,当以交易日期(trans_date)来查询交易记录时,通常会对该字段添加索引,以便在大量数据的情况下提升查询效率。...针对trans_date字段,创建union_idx_query索引,那么在下面以trans_date为查询条件的语句中,毫无疑问是会走索引的: select count(1) from A; // 40000...* from t_trans_log_info where trans_date > '20120222'; explain的结果显示走了索引: 为什么同样的查询语句,只是查询的参数值不同,却会出现一个走索引...也就是说,当Mysql发现通过索引扫描的行记录数超过全表的10%-30%时,优化器可能会放弃走索引,自动变成全表扫描。某些场景下即便强制SQL语句走索引,也同样会失效。
前言 Mysql的join是什么,join这个单词的意思是加入、参加、连接,而在数据库中,也是连接的意思,将两个表连接起来查询出我们想要的数据。...在数据库中,join的用法主要分成三种,分别是左连接、右连接和内连接,但是实际运用中,两个表之间的操作,是一共有七种,那我们今天就开始认识一下这七种用法吧 下面所有的椭圆都代表两个不同的表,假定左边为test1...表,右边的为test2表,下面是两个表的情况 [a3790a3f6131d0bddf3b41a0ff0440e0.png] test1表有uid、名字和地区三个字段 [20210608203801566...主要看以哪个表为主,这里为左连接就以左表为主,左表的数据都查询出来,右表有数据则显示,没有则为空 总结:查询的是两表共同的部分加上左表剩下的部分 4.右连接 [bb21726c582d7fb29002c6f8748e6ae7...20210608204048671.png] 跟左连接类似,光看图好像跟只查询右表没什么区别,实际上两个表的公共部分也是一起查询了,左表的数据如果有就查出来,没有就为空 主要看以哪个表为主,这里为左连接就以左表为主
当希望 MySQL 能够以高性能的方式运行查询时,最好的办法就是弄清楚 MySQL 是如何优化和执行查询的。MySQL 执行一个查询的过程,如下: ?...【4】MySQL 从不考虑其他并发执行的查询:可能会影响到当前查询的速度。 【5】MySQL 也并不是任何时候都是基于成本的优化:有时也基于一些固定的规则。...例如:(5=5 AND a>5)将被改写为 a>5; 【3】将外连接转化成内连接:并不是所有的 OUTER JOIN 语句都必须以外连接的方式执行。...在MySQL中不成立,IN()列表中的数据先排序,然后通过二分查找的方式来确定列表中的值是否满足条件,这是一个 O(logn)复杂度的操作,等价地转化成 OR 查询的复杂度为 O(n),对于 IN()...六、查询执行引擎 ---- 在解析和优化阶段,MySQL 将生成查询对应的执行计划,MySQL 的查询执行引擎则根据这个执行计划来完成整个查询。这里执行计划是一个数据结构,而不是字节码。
数据操作语言:分组查询 为什么要分组?...默认情况下汇总函数是对全表范围内的数据做统计 GROUP BY 子句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理 SELECT deptno,AVG(sal...查询语句中如果含有 GROUP BY 子句,那么 SELECT 子句中的内容就必须要遵守规定: SELECT 子句中可以包含聚合函数,或者 GROUP BY 子句的分组列,其余内容君不可出现在 SELECT...(sal),MIN(sal),count(*) FROM t_emp GROUP BY deptno WITH ROLLUP GROUP_CONCAT 函数 GROUP_CONCAT 函数可以把分组查询中的某个字段拼接成一个字符串...查询语句中,GROUP BY 子句应该被 第几个执行?
mySQL查询执行的过程 01 查询的流程图 当我们希望MySQL能够以更高的性能进行查询时,弄清楚MySQL中是如何优化和执行查询的就显得很有必要,这里,先搬出来一张图镇楼: ?...这张图写清楚了一个查询在MySQL中的执行过程: 1、客户端发送一条查询给服务器。 2、服务器先检查查询缓存,如果命中了缓存,则会进行权限校验,权限校验通过,直接返回结果。...3、如果没有命中缓存,则进行SQL解析、预处理、再由优化器进行查询优化,计算各项查询方法的成本、生成对应的执行计划。 4、MySQL根据执行计划,调用存储引擎的API来执行查询。...在我们查询的过程中,MySQL会维护一个查询状态,也就是我们使用show processlist来进行查看的时候的一些状态值,例如: sleep,说明线程正在等待客户端发送新的请求 query,线程正在执行查询或者正在将结果发送给客户端...sending data,这个状态表示服务器可能在多个状态之间传送数据或者在生成结果集想客户端返回 03 查询缓存 在解析查询的SQL的时候,如果这个查询时打开的,那么MySQL会优先在缓存中查询该
,如果我们使用了表的别名,在查询字段中、过滤条件中就只能使用别名进行代替,不能使用原有的表名,否则就会报错。...阿里开发规范: 【强制】对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名(或 表名)进行限定。...说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且操作列在多个表中存在时,就会抛异常。...`employee_id`; [在这里插入图片描述] 分类3:内连接 vs 外连接 除了查询满足条件的记录以外,外连接还可以查询某一方不满足条件的记录。...`department_id` = d.department_id; #只有106条记录 外连接:合并具有同一列的两个以上的表的行, 结果集中除了包含一个表与另一个表匹配的行之外,还查询到了左表 或
全列查询 语法:SELECT * FROM 表名; 通常情况下不建议使用 * 进行全列查询,因为: 查询的列越多,意味着需要传输的数据量越大; 可能会影响到索引的使用。...查询字段为表达式 表达式不包含字段:select id, name, 10 from exam_result; - - - 显示 10 表达式包含一个字段:select id, name, chinese...为查询结果指定别名 语法:SELECT column [AS] alias_name […] FROM table_name; 例如将上面统计的总成绩的字段改为总分:select id, name, chinese...select name, chinese+math+english total from exam_result order by total desc; 查询姓名首字母为 J 的同学或者为 S 的同学数学成绩...实例:创建一个新表,插入一个旧表中查询到的去重后的数据 先创建一个旧表,并插入数据: mysql> create table duplicate_table (id int, name varchar
查询的列越多,意味着需要传输的数据量越大; -- 2. 可能会影响到索引的使用。...也就是我们可以自己定义查询表达式 案例: -- 表达式包含一个字段 //查询每个人的学号,姓名和对应的数学成绩加上100分 mysql> select id,name,math+100 from...结果为 TRUE(1) NOT 条件为 TRUE(1),结果为FALSE(0) 2.1英语不及格的同学及英语成绩 //使用<号 mysql> select id,name,english from...数量 SUM([DISTINCT] expr) 返回查询到的数据的 总和,不是数字没有意义 AVG([DISTINCT] expr) 返回查询到的数据的 平均值,不是数字没有意义 MAX([DISTINCT...] expr) 返回查询到的数据的 最大值,不是数字没有意义 MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义 1.count函数 案例: mysql> select
“ 在昨天的MySQL的查询优化(一)中,我们谈到SQL常用的一些优化方式:给字段增加索引,避免索引失效,替换掉一些不合理的关键词,那么今天我们继续来看SQL如何进行查询优化” 在上一章第一条优化中我们说到在...在MySQL5.6以后,Extra出现这句话表明,这条SQL语句优先去过滤索引,过滤完索引后找到所有符合索引条件的数据行。如果WHERE 还存在子句,再随后去过滤这些子句数据行。...来看一下:这里我想计算一下,状态为0和为1的数据量有多少。怎么实现呢?...(2)增加中间表 对于需要经常联合查询的表,可以建立中间表以提高查询效率。...通过建立中间表,把需要经常联合查询的数据插入到中间表中, 然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。
领取专属 10元无门槛券
手把手带您无忧上云