mysql - varchar類型與數字的比較和轉換(中間帶字母)


前言:

  在這次項目中遇到條件范圍篩選。

  對某個字段做范圍查詢。

  • 篩選的值數據庫存儲類型為varchar  
  • 是有規律的字母摻加時間數字加順序遞增的數字序號

 

首先這個值的篩查條件以日期做選擇范圍,Mysql語法做范圍查詢我優先選擇比較運算符。

然后就是了解Mysql字符串類型轉換。

查閱了文檔了解到,在mysql里轉化語法主要為兩個 castconvert

CAST(value as type);
CONVERT(value, type);

當 '123aaa' -> ‘123’; ‘abc’ -> 0    ‘abc123’  ->  '0'   // 遇到字母就不轉化

 

這時候字符串與數字比較問題已經解決了,下個問題就是對字符串進行裁剪

看了mysql的函數文檔

substring(str, star, len);  // 對字符串做裁剪

 

最終我們的問題解決函數就出來了:

如如下一張表:

employee_list
—————————————————————

|                  id                     |        name             |

| AAAA20201206-00001    |     xiaohong          |

| AAAA20201207-00001    |     xiaoming          |

| AAAA20201207-00001    |     xiaoming          |

| AAAA20201207-00001    |     xiaoming          |

| AAAA20201209-00001    |     xiaohuang        |

—————————————————————

查詢20201206 到 20201209 區間的數據,不包括(20201206 和 20201209)

mysql語法:

SELECT * FROM employee_list where cast(substring(id, 5, 8) as SIGNED) > 20201206 AND cast(substring(id, 5, 8) as SIGNED) < 20201209;

 

其中:核心方法substring()方法

  第一個參數接收字段名

  第二個參數是要提取的索引位(從1開始)

  第三個參數表示從索引位開始要再提取幾位字符

所以: substring(id, 5, 8)  -> 20201206

 

核心方法cast()方法:

  把上面提取好的字符串轉數字: cast('20201206' as SIGNED);   // (數值類型)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM