MySQL中字符串比較大小詳解(日期字符串比較問題)
前言
數(shù)據(jù)庫中在對于數(shù)字與非數(shù)字混合的字符串,在進行大小比較的時候,如果兩字符串長度相等,那么兩字符串就會比較相同位置的字符,比較時若字符是數(shù)字,則直接比較,若字符是非數(shù)字那么會轉換為ascii碼進行比較,若在某位置上已經(jīng)有大小之分,那么就不會再進行比較。
如上所述,當字符串用于比較時間格式數(shù)據(jù)進行時間維度的比較時會出現(xiàn)問題。如以下sql進行查詢時
select * FROM work_day_content as wdc WHERE wdc.work_day >= '2019-09-30 00:00:00' AND wdc.work_day<= '2019-10-06 00:00:00'
? 圖1-1
如圖1-1所示,沒有查詢出任何條件
當使用日期函數(shù)把字符串轉化為日期時
select * FROM work_day_content as wdc where date(wdc.work_day) >= date('2019-09-30 00:00:00' ) AND date(wdc.work_day)<= date('2019-09-30 00:00:00' )
? 圖1-2
如圖1-2所示,查出了符合條件的數(shù)據(jù)
分析為何第一個sql語句沒有查詢出內容。由于該字段使用的是字符串形式存儲,因此此時比較大小采用的是字符串方式比較大小。
字符串方式比較大小是從左往右進行匹配。對于長度不同的字符串進行匹配時。較短字符串比較完后還沒有大小之分。則較長的字符串較大。如下面sql所示
select '2019-09-30 ' < '2019-09-30 00:00:00'
發(fā)現(xiàn)此時**字符串’2019-09-30 00:00:00’**較大。因此之前的sql沒有查出日期為2019-09-30的數(shù)據(jù)
因此。在使用字符串表示時間時,需要使用時間函數(shù)進行比較。
sql提供的時間函數(shù)有:date(), str_to_date()
另外,在mysql當中,字符串類型間進行加減乘除運算的時候,會截取字符串以數(shù)字開頭的那一部分數(shù)字進行運算,如果字符串前面沒有數(shù)字,那么就只能截取的數(shù)值為0,那么進行加減的時候結果都是0,進行乘除的時候結果都是NULL。
總結
到此這篇關于MySQL中字符串比較大小的文章就介紹到這了,更多相關MySQL字符串比較大小內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
簡單了解MySQL數(shù)據(jù)庫優(yōu)化技巧
這篇文章主要介紹了簡單了解MySQL數(shù)據(jù)庫優(yōu)化技巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07mysql如何創(chuàng)建數(shù)據(jù)庫并指定字符集
這篇文章主要介紹了mysql如何創(chuàng)建數(shù)據(jù)庫并指定字符集問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12