mysql 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)
有一張如下圖所示的表,需要我們查出 result 值大于 reference_high值的數(shù)據(jù)

然后我們寫(xiě)了下面的SQL查詢語(yǔ)句
SELECT i.result,i.reference_high FROM report_item iLEFT JOIN report r ON r.id=i.report_id WHERE r.org_id=54 AND r.report_status=1AND r.add_date BETWEEN ’2020-12-01’ AND ’2020-12-28’ AND i.reference_high<>’’ AND i.result<>’’AND i.result > i.reference_high ;
然后執(zhí)行查看結(jié)果

查詢結(jié)果并不如我們預(yù)期的那樣,存在大量的數(shù)據(jù)不滿足 i.result > i.reference_high 的查詢條件
二、定位查看建表SQL語(yǔ)句,我們發(fā)現(xiàn) result 和 reference_high 是varchar類型,并不是數(shù)值類型,所以出現(xiàn)了查詢結(jié)果與預(yù)期不符的情況

方式一:修改表字段數(shù)據(jù)類型為數(shù)值型
但是考慮業(yè)務(wù)使用場(chǎng)景,兩個(gè)字段都是有可能會(huì)出現(xiàn)非數(shù)值類型的輸入,所以不可行
方式二:修改查詢語(yǔ)句,將數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值型

以 以上數(shù)據(jù)示例
1、隱式轉(zhuǎn)換:將需要比較的字符串加0之后再比較,數(shù)據(jù)被成功過(guò)濾

2、顯示轉(zhuǎn)換
(1)使用convert函數(shù):將字符串轉(zhuǎn)換為浮點(diǎn)數(shù),再進(jìn)行比較,數(shù)據(jù)被成功過(guò)濾

(2)使用cast函數(shù):與convert函數(shù)幾乎一樣

到此這篇關(guān)于mysql 數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mysql 數(shù)據(jù)類型轉(zhuǎn)換內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Windwos下MySQL 64位壓縮包的安裝方法學(xué)習(xí)記錄2. Access數(shù)據(jù)庫(kù)安全的幾個(gè)問(wèn)題3. mysql-bin.000001文件的來(lái)源及處理方法4. MySQL中InnoDB和MyISAM類型的差別5. MYSQL數(shù)據(jù)庫(kù)存文本轉(zhuǎn)存數(shù)據(jù)庫(kù)問(wèn)題6. ACCESS轉(zhuǎn)SQL數(shù)據(jù)庫(kù)相關(guān)的幾個(gè)技能7. mysql 視圖操作和存儲(chǔ)過(guò)程8. mysql啟動(dòng)時(shí)報(bào)錯(cuò) ERROR! Manager of pid-file quit without9. 數(shù)據(jù)庫(kù)相關(guān)的幾個(gè)技能:ACCESS轉(zhuǎn)SQL10. 如何實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的備份與恢復(fù)

網(wǎng)公網(wǎng)安備