ifnull mysql date,MySQL的CAST和IFNULL函数的问题
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/program/mysql_cast_ifnull_problem.html
关于MySQL的一个CAST和IFNULL函数诡异问题,不明原因,记录一下,明天继续分析。
这个是WP-PostView插件的一段SQL:
SELECT p.ID, p.post_title,
IFNULL( CAST( pm.meta_value AS UNSIGNED ) , 0 ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key = "views"
WHERE p.post_date < "2010-03-05 22:19:55"
AND p.post_status = "publish"
AND p.post_type = "post"
AND p.post_password = ""
ORDER BY views DESC LIMIT 5
在我的数据库上查询结果非常诡异:
ID post_title views
10 [论文]对简易几何机械化证明的进一步研究 9
32 页面总算基本修正好了 9
51 一个很好玩的钢琴Flash游戏 9
60 修改友情链接的排列方式 9
93 UML之父——Ivar Jacobson介紹SMART方法 9
选出来的views列全部是9,不知道为什么。
如果我去掉IFNULL,
SELECT p.ID, p.post_title,
CAST( pm.meta_value AS UNSIGNED ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key = "views"
WHERE p.post_date < "2010-03-05 22:19:55"
AND p.post_status = "publish"
AND p.post_type = "post"
AND p.post_password = ""
ORDER BY views DESC
得到的结果将是对的,
如果去掉CAST,
SELECT p.ID, p.post_title, IFNULL( pm.meta_value, 0 ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key = "views"
WHERE p.post_date < "2010-03-05 22:19:55"
AND p.post_status = "publish"
AND p.post_type = "post"
AND p.post_password = ""
ORDER BY views DESC LIMIT 5
得到的就是错的,并且只有2位数一下的结果,2位数以上的结果出不来,但不是9或者99了。
明天继续分析这个问题。
暂时通过去掉IFNULL来解决。
ifnull mysql date,MySQL的CAST和IFNULL函数的问题相关推荐
- mysql date trunc用法_Oracle数据库-trunc函数的用法
trunc 函数可用于截取日期时间 用法:trunc(字段名,精度) 具体实例: 在表table1中,有一个字段名为sysdate,该行id=123,日期显示:2016/10/28 15:11:58 ...
- mysql+cast+0x_mysql cast与convert 函数的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下:CAST(value as type); CONVERT(value, type); ...
- mybatis学习(21):MySQL 字符串 转换 CAST与CONVERT 函数的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: Sql代码 CAST(value as type); CONVERT(value, ...
- MySQL CAST与CONVERT 函数的用法
文章转自 http://www.nowamagic.net/librarys/veda/detail/2044 MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类 ...
- Unable to convert MySQL date/time value to System.DateTime
转 : http://www.cnblogs.com/zeroone/archive/2012/06/27/2565332.html C#读取MySql时,如果存在字段类型为date/datetim ...
- mysql double转字符串_MySQL 字符串 转 int/double CAST与CONVERT 函数的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: CAST(value as type); CONVERT(value, type) ...
- mysql cast 整数_Mysql-CAST/CONVERT 类型转换函数之 整型
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值. CAST(xxx AS 类型) , CONVERT(xxx,类型) 这个类型 可以是以下值其中的 一 ...
- MySql数据类型转化-CAST与CONVERT 函数的用法
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: CAST(value as type); CONVERT(value, type) ...
- mysql排序convert_MYSQLVARCHAR排序CAST,CONVERT函数类型转换
自己建表的时候,把一个字段类型创建为varchar(2) ,其实应该建为integer(2)的,但是今天在后台发现排序有问题,varchar排序有问题,所以该怎么解决呢? 示例表结构: 先来看一下,我 ...
最新文章
- 基于倒排表的电力调度知识问答系统构建 (100行代码带你实现nlp问答系统)
- Spring-IOC XML 配置多个相同 ID 的 bean 加载分析
- NOIP2013货车运输
- python3 [装饰器] 总结
- Onvif之设备发现-基于gsoap2.8.27
- jquery ajax post 传递数组 ,多checkbox 取值
- Ubuntu12.04 安装(无法将 grub-efi 软件包安装到/target/中,如果没有 GRUB 启动引导期,所安装的系统无法启动)...
- 类加载与 Java主类加载机制解析
- C#中各种字符类型的转化
- 导出excel乱码问题
- Java+SpringBoot+vue+elementui垃圾分类网站系统mysql源码介绍
- 8086 CPU 寄存器
- Vscode的Tab 键设定
- python-matplotlib绘图 -应用subplots_adjust()方法解决图表与画布的间距问题
- D触发器、D上升沿触发器、T触发器
- PCI/PCIe转串口Linux驱动使用说明
- 修改Zabbix标志性logo
- 编写一程序从键盘输入圆锥体的半径r 高度h 并计算其体积
- 教妹学 Java:大有可为的集合
- 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
热门文章
- 16年底一份肯定自我的工作总结(两年公安、六年水利)
- 如何使用计算机防病毒,如何使用计算机的内置防病毒软件mcafee
- goland2020设置go module
- random.nextInt()的用法
- 色盲测试,没人能过6关!
- boolean mybatis_浅谈mybatis中SQL语句给boolean类型赋值问题
- 外出携带什么耳机合适?适合假日旅行休闲的蓝牙耳机
- Containerd镜像lazy-pulling解读
- [c]输入一个英文句子,统计句子中单词的个数
- Rust原子类型和内存排序