关于mysql字符和数字类型转换的问题研究

关于mysql字符和数字类型转换的问题研究

今天晚上临近下班,被问到一个sql的问题,特此记录,作为提升:

关于字符和数字类型转换的问题。

看几种情况:
1.

SELECT '10' - 2 ;

结果:
在这里插入图片描述
2.

SELECT 10 > 2;

在这里插入图片描述
3.

SELECT '10' > 2;

在这里插入图片描述
4.

SELECT '10' > 20;

在这里插入图片描述
5.

SELECT 
	CASE 
		WHEN '10' > '2'+0 THEN 
		'判断条件为真'
	ELSE
		'判断条件为假'
END;

在这里插入图片描述
6.

SELECT 
	CASE 
		WHEN '10' > '2'THEN 
		'判断条件为真'
	ELSE
		'判断条件为假'
END;

在这里插入图片描述

SELECT '10' - '2a';

在这里插入图片描述
8.

SELECT '10' > '2a' + 0;

在这里插入图片描述
9.

SELECT '10b' > 'y';

在这里插入图片描述
10.

SELECT 'a' < 'b';

在这里插入图片描述
11.

SELECT 'a' < 'b' + 0;

在这里插入图片描述
12.

SELECT 'b' - 'a';

在这里插入图片描述
13.

SELECT '10a' - '11c';

搜了一些博客:
说是:
两个字符串:
做运算,是按照对象开头的数字进行的

SELECT 10 - '2a121';

在这里插入图片描述

SELECT 'a' - 1;

在这里插入图片描述
纯字母开头数字是0;

SELECT 'abc' < 'b';

在这里插入图片描述

一个数字,一个是字符串呢?

SELECT '3a' > 1;

在这里插入图片描述

SELECT '3a' > 4;

在这里插入图片描述
一旦有数字,情况又不一样了,它开始按照开头数字比较

SELECT '10' >'2a';

在这里插入图片描述

SELECT '10' > '2a' +0;

在这里插入图片描述
这里应该是,先进行了 2+0 = 2,然后,进行了纯数字比较,10>2

归纳:
比较大小:

ab规则
字符串字符串按位比较
字符串数字按照对象开头数字
字符串字符串+数字按照对象开头数字

加减等

ab规则
字符串字符串对象开头的数字,没有数字,按0算
字符串数字按照对象开头的数字
字符串字符串+数字按照对象开头的数字

也就是说,只要+0可以让不管比较大小,还是运算,按照截取开头数字,再来进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋夜白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值