首页 > 数据库 >Mysql的max()函数9大于10问题

Mysql的max()函数9大于10问题

时间:2024-05-14 17:12:18浏览次数:14  
标签:10 max ProjectId UNSIGNED DIC Mysql INTEGER

前言

在公司老项目使用过程中都遇到过这个问题,所以这里记录下来

问题描述

使用系统中发现系统的字典新增之后排序不固定,于是查找问题,打开数据库发现sort大部分都是"10"

mybatis中查询语句如下:

 `select IFNULL(MAX(DIC_SORT),0) FROM DIC_INFO WHERE 'ProjectId' =#{ProjectId}`

发现该语句查出来的数值为 “9”

原因分析

原因是因为,字符串截取函数截取出来的数字是 varchar 类型的。而 max 函数对于字符串的比较,是先比较首字符的 ASCii 码 的大小,然后依次往后进行比较的,所以字符串 9 比 字符串 10 大。

解决办法

所以如果想返回自然顺序的最大值,需要把类型转换为 int 后再比较。

替换函数:cast(xxx as UNSIGNED INTEGER)

Sql如下:

 `select IFNULL(cast(MAX(DIC_SORT)),0) FROM DIC_INFO WHERE 'ProjectId' =#{ProjectId}`

这里的 UNSIGNED INTEGER 可以为:

 `浮点数 : DECIMAL` 
 `整数 : SIGNED INTEGER 等同于 INTEGER`
 `无符号整数 : UNSIGNED INTEGER`
 `二进制,同带 binary 前缀的效果 : BINARY    
 字符型,可带参数 : CHAR()    
 日期 : DATE    
 时间: TIME    
 日期时间型 : DATETIME`
 

标签:10,max,ProjectId,UNSIGNED,DIC,Mysql,INTEGER
From: https://www.cnblogs.com/Argilgamesh/p/18191736

相关文章

  • 2024年AppScan 最新10.5.0破解版 附详细安装教程
     免责声明请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后24小时删除,请勿用于商业用途。如文中内容涉及侵权行......
  • MySQL忽略后空格符
    select"张三"="张三"#输出1select"张三"="张三"#输出0select"张三"="张三"#输出0根据上面的SQL可以看到,如果MySQL的比较条件参数是字符串,那么MySQL会自动省略字符串中的后空格。参考文档:https://deepinout.com/sql/sql-questions/146_sql_......
  • 干电池升压芯片PW5100:高效转换,赋能小型设备
    内容简述目录:1,干电池的工作电压范围2,平芯微根据干电池规格书整理的干电池输出电流性能表3,干电池负载能力的理解和解释4,专用干电池升压芯片PW51005,干电池升压芯片采用0603,0805,1206电感和输出电流测试6,干电池升压芯片真关断控制版本PW51037,电荷泵升压IC和专用干电池升压芯片......
  • Mysql批量插入数据(python脚本)
    有个需求:需要在table1中插入205条数据,role_id固定为65,menu_id从91开始方法二:python脚本实现PyMySQL是一个纯Python编写的MySQL客户端库,用于连接和操作MySQL数据库。以下是PyMySQL的主要功能和优点:功能:数据库连接:PyMySQL提供了connect()方法,用于建立与MySQL数据库的连接。一旦......
  • Mysql批量插入数据
    有个需求:需要在table1中插入205条数据,role_id固定为65,menu_id从91开始方法一:存储过程1、什么是存储过程?MySQL存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集合。用户通过指定的存储过程名称和参数(如果有的话)来调用并执行它。存储过程可以在程序中被多次调用,并......
  • mysql 锁
    1,介绍  锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。......
  • Centos7下Prometheus+Grafana部署 redis 以及 mysql 监控
    Prometheus部署mysql监控本篇文章部分内容与我前一篇文章衔接,看不明白的可以参考我前一篇文章Centos7下搭建Prometheus+Grafana并部署基础监控Redis监控对于Redis的监控,Prometheus可以收集多种指标,包括但不限于:命令统计:如每个命令的调用次数、执行时间等。内存使用情......
  • 阿里云Windows server 2016服务器Antimalware Service Executable进程占比高,cpu接近10
    问题描述:阿里云Windowsserver2016服务器AntimalwareServiceExecutable进程占比高,cpu接近100%,需要强制关闭该进程,排查问题,进入系统服务关闭,提示拒绝访问(该服务关闭后有风险,需评估后操作)  操作步骤:1.进入服务器,进入Windowspowershell界面; 2. 输入 regadd"HKEY_L......
  • mysql触发器
    1.介绍  触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。  使用别名OLD和NEW来引用触发器中发生......
  • 洛谷题单指南-动态规划3-P1063 [NOIP2006 提高组] 能量项链
    原题链接:https://www.luogu.com.cn/problem/P1063题意解读:本质上是一个环形石子合并问题,计算合并产生的最大能量。解题思路:对于环形DP问题,可以把环拆开,并复制2倍长度,然后用1~n的区间长度去枚举1、状态表示设structnode{inthead,tail}用于表示每一个项链节点,其中有头、尾......