一、問題
有一張如下圖所示的表,需要我們查出 result 值大於 reference_high值的資料
然後我們寫了下面的sql查詢語句
select i.result,i.reference_high from report_item i
left join report r on r.id=i.report_id
where r.org_id=54 and r.report_status=1
and r.add_date between '2020-12-01' and '2020-12-28'
and i.reference_high<>'' and i.result<>''
and i.result > i.reference_high ;
然後執行檢視結果
查詢結果並不如我們預期的那樣,存在大量的資料不滿足 i.result > i.reference_high 的查詢條件
二、定位
檢視建表sql語句,我們發現 result 和 reference_high 是varchar型別,並不是數值型別,所以出現了查詢結果與預期不符的情況
三、解決
方式一:修改表字段資料型別為數值型
但是考慮業務使用場景,兩個欄位都是有可能會出現非數值型別的輸入,所以不可行
方式二:修改查詢語句,將資料型別轉換為數值型
以 以上資料示例
1、隱式轉換:將需要比較的字串加0之後再比較,資料被成功過濾
2、顯示轉換
(1)使用convert函式:將字串轉換為浮點數,再進行比較,資料被成功過濾
(2)使用cast函式:與convert函式幾乎一樣
Mysql 資料型別轉換
摘自 daisylh 部落格 mysql資料形態轉換沒有函式,今天在一位的幫助下尋得決竅 將char形態查詢轉換為int形態 select 字段 from 資料表 order by 字段 1 將int形態查詢轉換為char形態 select 字段 from 資料表 order by concat 字...
MySQL 資料型別轉換
網路越來越達到所以帶來的好處不容置疑.但是有的時候也帶來了一定的困擾.我發現乙個很常見的問題.乙個問題都是翻來覆去的轉來轉去.下面我介紹下mysql的資料型別的轉換操作.mysql中提供了兩個內建函式提供我們使用分別為 cast和convert,mysql 的cast 和convert 函式可用來轉...
mysql資料型別轉換
mysql資料型別轉換 一 int型的數字怎麼轉換成字串 以及字串轉換成int mysql 數字型別轉換函式 concat cast 1 將int 轉為varchar經常用 concat函式,比如concat 8,0 得到字串 80 2 將varchar 轉為int 用 cast a as sign...