關於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
歸納:
比較大小:
a | b | 規則 |
---|---|---|
字串 | 字串 | 按位比較 |
字串 | 數字 | 按照物件開頭數字 |
字串 | 字串+數字 | 按照物件開頭數字 |
加減等
a | b | 規則 |
---|---|---|
字串 | 字串 | 物件開頭的數字,沒有數字,按0算 |
字串 | 數字 | 按照物件開頭的數字 |
字串 | 字串+數字 | 按照物件開頭的數字 |
也就是說,只要+0可以讓不管比較大小,還是運算,按照擷取開頭數字,再來進行操作。
相關文章
- 數字型別的不正確轉換漏洞型別
- 關於a標籤的字型顏色問題
- mysql隱式轉換問題MySql
- mysql bigint型別和datetime型別的轉換MySql型別
- c++中字元、字串和數字間的轉換C++字元字串
- 關於int型別數值的運算問題型別
- 關於影像識別的問題
- 陣列和列表的轉換問題陣列
- CAPL指令碼中常用到的資料型別轉換——數字型別(int/double)和字串型別(char array)指令碼資料型別字串
- Double型別轉換成BigDicimal問題型別
- tp5.0 的模型型別轉換問題模型型別
- js視訊轉字元畫 —— 寫一個屬於自己的字元轉換器JS字元
- 【關於Javascript】--- 隱式型別轉換篇JavaScript型別
- 關於 Homestead 連線 MySQL 問題MySql
- MySQL關於事務常見的問題MySql
- 關於 mysql 中的 rand () 查詢問題MySql
- MySQL 中字元編碼問題MySql字元
- 關於Java中進位制轉換以及位運算問題Java
- CV關於Mysql中ON與Where區別問題詳解buaMySql
- lua自動化指令碼關於文字讀寫和特殊不可見字元轉換的處理指令碼字元
- 關於 a 標籤跳轉問題
- 關於SAP ABAP字元變數和字串變數字元個數的一個知識點,和一個血案字元變數字串
- 關於【s】和[t]字元字元
- 關於浮動會錯亂的問題——轉換思維尋找替代方案
- latex 語法塊中字型加粗問題、換行問題
- 關於問問題和時間管理的感悟
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- MySQL:一次timestamp時區轉換導致的問題MySql
- Kotlin 資料型別詳解:數字、字元、布林值與型別轉換指南Kotlin資料型別字元
- SQL隱碼攻擊之字元型和數字型注入SQL字元
- 變數型別轉換變數型別
- 關於setInterval和setTImeout中的this指向問題
- 關於 SAP Spartacus 和 SmartEdit 整合的問題
- 字元編碼轉換字元
- PHP 字串強制轉換為數值問題PHP字串
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- mysql和mongodb替換欄位中某字元MySqlMongoDB字元
- MySQL 字元型別MySql字元型別