国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

為什麼 MySQL 中只有列名而沒有等於值的 where 不是語(yǔ)法錯(cuò)誤
P粉481815897
P粉481815897 2023-09-16 10:37:20
0
1
804

為什麼這樣的查詢不是語(yǔ)法錯(cuò)誤?我有 SQL Server 背景,我真的很驚訝。

從 my_table WHERE id 中選擇 *

我認(rèn)為它會(huì)驗(yàn)證它是否具有值,但行為並不一致,使用 id 時(shí)它會(huì)返回具有 id 的位置,但使用 name 時(shí)它不會(huì)返回任何內(nèi)容:

https://www.db-fiddle.com/f/enWGyAW4BtLC64PVzkbTVK/0

P粉481815897
P粉481815897

全部回覆(1)
P粉511896716

MySQL 有一些不符合標(biāo)準(zhǔn) ANSI SQL 的行為。在這種情況下,MySQL 將整數(shù)零值視為 false,將任何整數(shù)非零值視為 true。在標(biāo)準(zhǔn) SQL 中,整數(shù)與布林值不同,但在 MySQL 中卻是。

當(dāng)您執(zhí)行查詢WHERE id時(shí),它會(huì)傳回id ?? 0的行。

當(dāng)您執(zhí)行查詢WHERE name時(shí),它將字串計(jì)算為整數(shù),這表示採(cǎi)用前導(dǎo)數(shù)字字元(如果有)的數(shù)值,並忽略任何後續(xù)的非數(shù)字字元。如果沒有前導(dǎo)數(shù)字,則字串的整數(shù)值為 0。

當(dāng)您執(zhí)行查詢WHERE name時(shí),只有當(dāng)該列中儲(chǔ)存的字串具有非零前導(dǎo)數(shù)字時(shí),它才會(huì)傳回行。在您的範(fàn)例 'outro' 中,它只有非數(shù)字,因此該值為零,無(wú)法滿足條件。

MySQL 的行為符合設(shè)計(jì),但這不是標(biāo)準(zhǔn) SQL。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板