1. 程式人生 > >mysql中查詢varchar型別欄位中的整數(去除小數)

mysql中查詢varchar型別欄位中的整數(去除小數)

(假設我們有一個students表,表中有個varchar型別的number欄位)


第一次我使用round()函式找出四捨五入後等於其本身的數字:
SELECT number FROM students WHERE ROUND(number) = number;
但是這種方法存在一個問題,就是無法剔除100.000這種情況


之後我使用了not like "%.%"的方法找出所有不帶小數點的數字:
SELECT number FROM students WHERE number NOT LIKE '%.%';
這種方法就把所有帶小數點的數字都去除了


然後我又找到了locate(substr,str)和position(substr IN str)和instr(str,substr)函式
SELECT number FROM students WHERE LOCATE('.',number) = 0;
SELECT number FROM students WHERE POSITION('.' IN number) = 0;
SELECT number FROM students WHERE INSTR(number,'.') =0;
這三個函式,如果在str中查詢到substr的字元(串)則返回substr在str中的位置,若沒有找到就返回0,因此,我們也可以使用LOCATE('.',number) > 0或POSITION('.' IN number) > 0 或INSTR(number,'.') >0的情況來找出小數。
注意著三個函式的substr和str的順序以及分隔方式是不同的,instr()與其它兩個的順序剛好相反,而position中用IN代替了逗號。