mysql字符串转数字_mysql字符串转数字小计
大家好,又见面了,我是你们的朋友全栈君。
问题:要求比较’100%’和’95%’的大小
实践:mysql> SELECT ‘100%’ > ‘95%’;
+—————-+
| ‘100%’ > ‘95%’ |
+—————-+
| 0 |
+—————-+
1 row in set (0.00 sec)
发现’100%’竟然小于’95%’
原因:因为是字符串,字符串比较是递归字符串里面的每个字符进行比较,先去第一个,1和9比较大小,则1比9小,输出结果;如果相等,则继续进行下一个字符比较
如果想要对这种类型的字符串进行大小比较,该怎么做呢?
转换为数字。
conv或者cast、convert
convert、cast的用法字符集转换 : CONVERT(xxx USING gb2312)
类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型),类型必须用下列的类型:
可用的类型
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
因为要转换为数字类型,如果是’100.12%’这种格式,最好是用decimal
新的比较方法如下:mysql> SELECT CAST(‘100.5%’ AS DECIMAL(10,2)) >CAST(‘99.6%’ AS DECIMAL(10,2)) bj;
+—-+
| bj |
+—-+
| 1 |
+—-+
1 row in set (0.00 sec)
mysql> SELECT CONVERT(‘100.5%’,DECIMAL(10,2)) >CONVERT(‘99.6%’,DECIMAL(10,2)) bj;
+—-+
| bj |
+—-+
| 1 |
+—-+
1 row in set (0.00 sec)
另外可以尝试conv函数,不过不能处理浮点型
其实,这样转换感觉有点儿不妥,要是mysql的模式换一下,估计会报错,最好的办法是把%号给替换掉,于是,就用下面这种方法mysql> SELECT CONVERT(REPLACE(‘100.5%’,’%’,”),DECIMAL(10,2)) >CONVERT(REPLACE(‘99.6%’,’%’,”),DECIMAL(10,2)) bj;
+—-+
| bj |
+—-+
| 1 |
+—-+
1 row in set (0.00 sec)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138999.html原文链接:https://javaforall.cn
相关文章
- mysql字符串转数字解决办法
- mysql倒序截取字符串_MySQL数据库之mysql截取字符串与reverse函数
- [MySQL高级](三) 索引分析详解数据库
- MySQL实现参数传递的方法(mysql传递参数)
- MySQL:Using SELECT to Retrieve Strings(mysql返回字符串)
- MySQL中实现随机字符串生成的方法(mysql随机字符串)
- MySQL复习知识深度探索(mysql复习)
- 深入揭秘MySQL执行计划(mysql执行计划查看)
- MySQL清空表:删除前再三考虑(mysql清空表)
- MySQL处理变长字符串的技巧(mysql变长字符串)
- 关联MySQL实现跨表关联查询(mysql跨表)
- 解决MySQL集群脑裂的有效方案(mysql集群脑裂)
- MySQL 中包含大量字符串处理功能(mysql字符串包含)
- MySQL:按字符串排序实现更高性能(mysql按字符串排序)
- MySQL数据库之间复制的实现(mysql不同数据库复制)
- MySQL拼接字符串实现案例分享(mysql 拼字符串)
- MySQL中char 6如何使用char 6数据类型进行数据存储(mysql中char 6)
- MySQL 使用 UTF8 编码存储数据(c mysql utf8)
- MySQL判定0值的方法(mysql中判断是否为0)
- MySQL中如何判断字符串不为空(mysql 不为空字符创)
- MySQL下载及安装教程快速掌握MySql下载及安装方法,更高效地使用MySql数据库(mysql下载了在哪)