mysql 資料型別轉換

2021-10-13 06:00:53 字數 1122 閱讀 8443

一、問題

有一張如下圖所示的表,需要我們查出 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...