Mysql中报错函数floor()函数和rand()函数的配合使用及原理详解

目录
  • 1. floor 函数
    • 1.1 floor 函数的作用
  • 2. rand() 函数
    • 2.1 rand() 函数的作用
  • 3. floor() 函数 配合 rand() 函数
    • 3.1 两个组合函数的使用
  • 4. 以 floor() 函数为主的报错注入
    • 4.1 报错注入的组成部分
    • 4.2 报错注入组成部分解析
    • 4.3 显错注入
  • 总结

1. floor 函数

1.1 floor 函数的作用

floor() 函数的作用是返回小于等于该值的最大整数

举例说明:select floor(1.1) from qs_ad_category

上述查询语句的结果为 1 由于 比1.1小的最大整数为 1 所以结果为 1

注意:floor()函数的使用局限:mysql 5.0及以上版本

2. rand() 函数

2.1 rand() 函数的作用

rand()函数的作用:获取随机的浮点数(小于0的小数),而 rand(0) 则是获取固定的小数值

举例说明:select rand() from qs_ad_category;

结果为随机的浮点型小数:0.7450851357961866

3. floor() 函数 配合 rand() 函数

3.1 两个组合函数的使用

由于rand()函数是获取小于1 的浮点数,也就是例如上述结果中的0.7450851357961866

而floor()函数是将括号中的值取整,以小于括号中值的最大整数作为结果展示出来。例如上述rand()的结果为 0.7450851357961866,那么最大整数就是 “0” 所以 :

select floor(rand(0)) from qs_ad_category 的 结果值 为 “0” 。

若是rand()*2,则 rand() 结果可能会大于 1 ,那么结合 floor()函数 ,最终的值可能为 1

select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables

4. 以 floor() 函数为主的报错注入

4.1 报错注入的组成部分

floor() 报错注入准确地说应该是floor、 count、 group by冲突报错, count(*)、rand()、group by三者缺一不可

4.2 报错注入组成部分解析

count() 函数:计数函数,用来计算数据总和的函数,该函数结果集只有一个。

floor() 函数+rand()函数:获取 0 或 1的整数值

group by 函数:在对数据进行分组时会先看虚拟表中是否存在这个值,不存在就插入;存在的话 count()加1,在使用 group by时 floor(rand(0)2)会被执行一次,若虛表不存在记录,插入虚表时会再执行一次

4.3 显错注入

使用报错获取当前用户信息
select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x

总结

到此这篇关于Mysql中报错函数floor()函数和rand()函数配合使用及原理详解的文章就介绍到这了,更多相关Mysql报错函数floor()和rand()内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql中RAND()随便查询记录效率问题和解决办法分享

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 有两个方法可以达成以上效果. 1.新建一个表,里面存着 -5 至 5 之间的数.再利用order by rand()得到随机数. #建立指定范围数据表 复制代码 代码如下: #auther: 小强(占卜师) #date: 2008-03-31 create table r

  • MySQL中的RAND()函数使用详解

    MySQL RAND()函数调用可以在0和1之间产生一个随机数: mysql> SELECT RAND( ), RAND( ), RAND( ); +------------------+-----------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +------------------+-----------------+------------------+ | 0.45464584925645 | 0.18244

  • MySQL的指定范围随机数函数rand()的使用技巧

    公式如下: rand() * (y-x) + x 咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数. 而在mysql里,随机数函数rand不能传参,产生的0到1之间的浮点数,要是我们需要在mysql产生大于1的随机整数,该怎么办呢? 这样的需求并不陌生,例如,咱做的文章系统,需要作弊,给文章的浏览量随机加上某个范围内的整数. 现在,假设需要产生234到5678之间的随机整数,mysql下怎么实现

  • MYSQL随机抽取查询 MySQL Order By Rand()效率问题

    要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描.但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机. 但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒

  • Mysql中报错函数floor()函数和rand()函数的配合使用及原理详解

    目录 1. floor 函数 1.1 floor 函数的作用 2. rand() 函数 2.1 rand() 函数的作用 3. floor() 函数 配合 rand() 函数 3.1 两个组合函数的使用 4. 以 floor() 函数为主的报错注入 4.1 报错注入的组成部分 4.2 报错注入组成部分解析 4.3 显错注入 总结 1. floor 函数 1.1 floor 函数的作用 floor() 函数的作用是返回小于等于该值的最大整数 举例说明:select floor(1.1) from

  • MySQL学习(七):Innodb存储引擎索引的实现原理详解

    概述 在数据库当中,索引就跟树的目录一样用来加快数据的查找速度,对于一个SQL查询操作,根据索引快速过滤掉不符合要求的数据并定位到符合要求的数据,从而不需要扫描整个表来获取所需的数据. 在innodb存储引擎中,主要是基于B+树来实现索引,在非叶子节点存放索引关键字,在叶子节点存放数据记录或者主键索引(或者说是聚簇索引)中的主键值,所有的数据记录都在同一层,叶子节点,即数据记录直接之间通过指针相连,构成一个双向链表,从而可以方便地遍历到所有的或者某一范围的数据记录. B树,B+树 B树和B+树都

  • python函数声明和调用定义及原理详解

    这篇文章主要介绍了python函数声明和调用定义及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数是指代码片段,可以重复调用,比如我们前面文章接触到的type()/len()等等都是函数,这些函数是python的内置函数,python底层封装后用于实现某些功能. 一.函数的定义 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回:

  • Vue的data为啥只能是函数原理详解

    目录 前言 1.Vue3中的data 2.vue中的data 3.证明data是函数以及原理实现 4.如果data必须是一个对象呢? 前言 在学习vue的时候vue2只有在组件中严格要求data必须是一个函数,而在普通vue实例中,data可以是一个对象,但是在vue3出现后data必须一个函数,当时看着官方文档说的是好像是对象的引用问题,但是内部原理却不是很了解,今天通过一个简单的例子来说明为啥data必须是一个函数 参考(vue2data描述) 参考: (vue3data描述) 1.Vue3

  • C++ 中的虚函数表及虚函数执行原理详解

    为了实现虚函数,C++ 使用了虚函数表来达到延迟绑定的目的.虚函数表在动态/延迟绑定行为中用于查询调用的函数. 尽管要描述清楚虚函数表的机制会多费点口舌,但其实其本身还是比较简单的. 首先,每个包含虚函数的类(或者继承自的类包含了虚函数)都有一个自己的虚函数表.这个表是一个在编译时确定的静态数组.虚函数表包含了指向每个虚函数的函数指针以供类对象调用. 其次,编译器还在基类中定义了一个隐藏指针,我们称为 *__vptr,*__vptr 是在类实例创建时自动设置的,以指向类的虚函数表.*__vptr

  • R语言dplyr包之高效数据处理函数(filter、group_by、mutate、summarise)详解

    R语言dplyr包的数据整理.分析函数用法文章连载NO.01 在日常数据处理过程中难免会遇到些难处理的,选取更适合的函数分割.筛选.合并等实在是大快人心! 利用dplyr包中的函数更高效的数据清洗.数据分析,及为后续数据建模创造环境:本篇涉及到的函数为filter.filter_all().filter_if().filter_at().mutate.group_by.select.summarise. 1.数据筛选函数: #可使用filter()函数筛选/查找特定条件的行或者样本 #filte

  • Mysql数据库group by原理详解

    目录 引言 1. 使用group by的简单例子 2. group by 原理分析 2.1 explain 分析 2.2 group by 的简单执行流程 3. where 和 having的区别 3.1 group by + where 的执行流程 3.2 group by + having 的执行 3.3 同时有where.group by .having的执行顺序 3.4 where + having 区别总结 4. 使用 group by 注意的问题 4.1 group by一定要配合聚

  • MySQL prepare原理详解

    Prepare的好处  Prepare SQL产生的原因.首先从mysql服务器执行sql的过程开始讲起,SQL执行过程包括以下阶段 词法分析->语法分析->语义分析->执行计划优化->执行.词法分析->语法分析这两个阶段我们称之为硬解析.词法分析识别sql中每个词,语法分析解析SQL语句是否符合sql语法,并得到一棵语法树(Lex).对于只是参数不同,其他均相同的sql,它们执行时间不同但硬解析的时间是相同的.而同一SQL随着查询数据的变化,多次查询执行时间可能不同,但硬解

  • MySQL COUNT(*)性能原理详解

    目录 前言 1.COUNT(1).COUNT(*)与COUNT(字段)哪个更快? 实验分析 实验结果 实验结论 2.COUNT(*)与TABLES_ROWS 3.COUNT(*)是怎么样执行的? 4.总结 前言 在实际开发过程中,统计一个表的数据量是经常遇到的需求,用来统计数据库表的行数都会使用COUNT(*),COUNT(1)或者COUNT(字段),但是表中的记录越来越多,使用COUNT(*)也会变得越来越慢,今天我们就来分析一下COUNT(*)的性能到底如何. 1.COUNT(1).COUN

  • Mysql MVCC机制原理详解

    什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制.MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存. 我们知道,一般情况下我们使用mysql数据库的时候使用的是Innodb存储引擎,Innodb存储引擎是支持事务的,那么当多线程同时执行事务的时候,可能会出现并发问题.这个时候需要一个能够控制并发的方法,MVCC就起到了这个作用. Mysql的锁和事务隔离级别 在理解MVCC机制

随机推荐