溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MYSQL的varchar與數(shù)值舉例分析

發(fā)布時間:2021-12-04 14:25:11 來源:億速云 閱讀:198 作者:iii 欄目:云計算

本篇內(nèi)容主要講解“MYSQL的varchar與數(shù)值舉例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“MYSQL的varchar與數(shù)值舉例分析”吧!

事件起源

好了來說具體場景,被同事叫去看一個奇怪的SQL。SQL語句很簡單,大概就是查詢某些字段有一些查詢條件而已。其中比較重要的一個條件就是 「where xx!=0」。說是很奇怪,為什么!=0就查詢到的結(jié)果就是10條。但是!=1 查詢出來的結(jié)果就是100條。

SELECT A,B,C FROM TABLE WHERE A!=0
res:10 
SELECT A,B,C FROM TABLE WHERE A!=0
res:100
 

下面我們簡單的來幾條數(shù)據(jù)看一下狀況。

狀況復(fù)現(xiàn)

「所有數(shù)據(jù)」

MYSQL的varchar與數(shù)值舉例分析  

「!=0」

MYSQL的varchar與數(shù)值舉例分析  

當(dāng)時就是直接拿到了這樣的結(jié)果。 

分析狀況

當(dāng)時看到這個問題之后我也很驚奇,不等于0 不應(yīng)該把所有的數(shù)據(jù)都拿到么。為什么會出現(xiàn)這樣的情況呢?

簡單考慮了一下,字段的類型為 varchar型,而查詢條件給予的是個數(shù)值型,那么問題應(yīng)該就是出現(xiàn)在這里。

數(shù)據(jù)庫在基于查詢條件進行檢索的時候會如何進行操作呢?
答案就是轉(zhuǎn)換成相同的類型。

那么對于這次的問題是字段轉(zhuǎn)換成int類型還是int轉(zhuǎn)換成varchar類型呢?其實簡單的看查詢結(jié)果就知道了。如果查詢條件‘0’轉(zhuǎn)換成了varchar那么就應(yīng)該獲取到全部的數(shù)據(jù)。但是現(xiàn)在的狀況是獲取到的數(shù)據(jù)不夠。那結(jié)論就是數(shù)據(jù)庫把要查詢的字段轉(zhuǎn)換成了數(shù)值型。
那么我們把app字段進行轉(zhuǎn)換一下試試。

MYSQL的varchar與數(shù)值舉例分析  

從結(jié)果上我們可以看到 app 轉(zhuǎn)換之后的結(jié)果只有 0123asfj 轉(zhuǎn)換成了123,其他都是0。所以在查詢條件為 ‘!=0’ 的時候就只能查詢到一條結(jié)果。

到此,相信大家對“MYSQL的varchar與數(shù)值舉例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI