在MySQL中,大部分情況下可以通過(guò)使用關(guān)鍵字MAX
或MIN
來(lái)比較兩個(gè)BIGINT
類(lèi)型的數(shù)的大小,如下所示:
SELECT MAX(column_name) FROM table_name; SELECT MIN(column_name) FROM table_name;
然而,若我們需要在WHERE子句或ORDER BY子句中比較兩個(gè)BIGINT
值的大小,則更為常用的是使用CAST
或CONVERT
函數(shù)將BIGINT
值轉(zhuǎn)換成BINARY
值進(jìn)行比較,如下所示:
SELECT column_name FROM table_name WHERE CAST(column_name AS BINARY) >CAST('123456789' AS BINARY); SELECT column_name FROM table_name ORDER BY CAST(column_name AS BINARY);
需要注意的是,BIGINT
轉(zhuǎn)換成BINARY
的值在比較時(shí)是以二進(jìn)制方式進(jìn)行的,而不是以十進(jìn)制方式進(jìn)行的。因此,在進(jìn)行BIGINT
比較時(shí),需要在查詢(xún)語(yǔ)句中明確指定數(shù)據(jù)類(lèi)型。
除了上述方法,還可以使用SIGN
函數(shù)將BIGINT
值轉(zhuǎn)換成INT
類(lèi)型,然后再進(jìn)行比較。具體操作如下:
SELECT column_name FROM table_name WHERE SIGN(column_name - 123456789) = 1; SELECT column_name FROM table_name ORDER BY SIGN(column_name - 123456789);
在以上語(yǔ)句中,SIGN(column_name - 123456789)
的返回值即為column_name
和123456789
的大小關(guān)系,若column_name
大于123456789
,則返回值為1
,若column_name
小于123456789
,則返回值為-1
,若兩個(gè)數(shù)相等,則返回值為0
。
總之,MySQL中對(duì)于BIGINT
類(lèi)型的比較,需要注意數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,同時(shí)也要考慮到性能問(wèn)題。