mysql中where后跟字段條件的疑惑
MySQL中,select from where 查詢語句,即使where后的條件僅剩一個(gè)字段,也能返回?cái)?shù)據(jù),但僅限于數(shù)字開頭的結(jié)果。這不禁讓人好奇,在這種情況下,MySQL到底是基于什么條件進(jìn)行過濾的。
根據(jù)MySQL文檔,where后的條件是一個(gè)表達(dá)式,如果對(duì)于每條待選行,表達(dá)式的值為真,則該行會(huì)被選擇。換句話說,where后的字段僅當(dāng)其可以轉(zhuǎn)換為true時(shí),才會(huì)成為有效條件。
在示例中,uuid是一個(gè)唯一標(biāo)識(shí)符字段,它可以轉(zhuǎn)換為true。因此,MySQL將where后的uuid視為一個(gè)表達(dá)式的值,對(duì)其進(jìn)行求值,并返回滿足uuid可以轉(zhuǎn)換為true的記錄。
值得注意的是,這種方法與oracle不同。在Oracle中,如果where后的條件僅剩一個(gè)字段,它會(huì)自動(dòng)報(bào)錯(cuò)。而MySQL則允許這種表達(dá)式的使用,并返回滿足條件的數(shù)據(jù)。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END