關於mysql字元和數字型別轉換的問題研究

秋夜白發表於2020-10-30

關於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可以讓不管比較大小,還是運算,按照擷取開頭數字,再來進行操作。

相關文章