亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


MySQL 中 IS TRUE 和 =True 查詢結(jié)果不一致的原因是什么?


avatar
小浪云 2024-11-10 177

MySQL 中 IS TRUE 和 =True 查詢結(jié)果不一致的原因是什么?

mysql 中 is true 和 =true 結(jié)果不一致的原因

mysql 中查詢數(shù)據(jù)時,使用 is true 和 =true 作為條件會導(dǎo)致不同的結(jié)果。這是因為這兩個操作具有不同的語義:

  • = 執(zhí)行的是數(shù)值比較。true 在 mysql 中表示為 1,但 is_deleted 列是一個 tinyint(1) 類型,它的取值范圍為 0-255。因此,=true 實際上是將 is_deleted 與 1 進(jìn)行比較。
  • is true 執(zhí)行的是真假判斷。在 mysql 中,非零值都表示 true,而 0 表示 false。因此,is true 將 is_deleted 為非零(即不等于 0)的記錄視為 true。

示例

已知表結(jié)構(gòu)如下:

create table user (   id int not null auto_increment,   is_deleted tinyint(1) not null default 0,   primary key (id) );
登錄后復(fù)制

插入的示例數(shù)據(jù):

insert into user (is_deleted) values (127); insert into user (is_deleted) values (0);
登錄后復(fù)制

查詢結(jié)果

執(zhí)行以下查詢語句:

select * from `user` where is_deleted is true;
登錄后復(fù)制

結(jié)果:

+----+------------+ | id  | is_deleted | +----+------------+ | 1   | 127        | +----+------------+
登錄后復(fù)制

執(zhí)行以下查詢語句:

select * from `user` where is_deleted = true;
登錄后復(fù)制

結(jié)果:

空集
登錄后復(fù)制

可見,使用 is true 查詢到了 is_deleted 為 127(非 0)的記錄,而使用 =true 未查詢到任何記錄。

相關(guān)閱讀