一、問題說明
為了簡便在存儲時我們經常將整型字段也以字符串形式存儲(如id值),但在篩選比較時就需要將該字段轉為數值類型。
二、處理辦法
2.1 使用cast函數進行類型轉換
cast函數格式----cast(column_name as target_value_type),例如現有edb_id字段將其轉為整型:cast(edb_id as SIGNED)
cast函數支持類型---- 二進制(BINARY)、字符型(CHAR())、日期 (DATE)、時間(TIME)、日期時間型(DATETIME)、浮點數(DECIMAL) 、整型(SIGNED)、無符號整數(UNSIGNED)
整句形如----select * from edb_records where cast(edb_id as SIGNED) > 40000;
2.2 使用convert函數進行類型轉換
convert和cast功能和用法是一樣的,只是參數格式不一樣。
convert函數格式----convert(column_name, target_value_type),例如現有edb_id字段將其轉為整型:convert(edb_id, SIGNED)
整句形如----select * from edb_records where convert(edb_id, SIGNED) > 40000;
三、字符串比較形式說明
整型篩選----select * from edb_records where cast(edb_id as SIGNED) > 40000;----此條語句返回所有edb_id作為數值時大於40000的記錄。
字符型篩選----select * from edb_records where edb_id > '40000';----此條語句返回所有edb_id作為數值時大於40000的記錄外,因為是字符串比較所以edb_id為999等的記錄也將會返回。
參考: