自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在MySQL中,where 1000<=字段<=2000的語句會(huì)查詢出什么結(jié)果?

數(shù)據(jù)庫 MySQL
我們可以看到,這個(gè)值都是0或1,因?yàn)?000<=salary的值是一個(gè)bool值,要么是0,要么是1。對(duì)于工資小于1000的,這個(gè)值就是0,而對(duì)于工資大于等于1000的,這個(gè)值就是1。而我們用0或1與2000比較,那么自然都是小于的了。所以結(jié)果就是條件永遠(yuǎn)成立。

Mysql是大家經(jīng)常使用的一種關(guān)系型數(shù)據(jù)庫,很多開發(fā)人員對(duì)于Mysql的使用也是非常熟悉。但是Mysql中依然有著很多很有意思的小細(xì)節(jié),可能很多經(jīng)常使用它的程序員也并不太了解。那么今天我們就來看一個(gè)例子。

在一張工資表中,如果寫下這樣一個(gè)語句:

select * from salary where 1000<=salary<=2000;

會(huì)查詢出什么結(jié)果呢?

可能有些人會(huì)覺得,這樣會(huì)查出所有ebonus在1000和2000之間的數(shù)據(jù)。

也有一部分人會(huì)覺得,這樣的寫法是錯(cuò)誤的,編譯不通過。

那么我們就來試驗(yàn)一下,這樣寫到底會(huì)出現(xiàn)什么結(jié)果。

首先我們準(zhǔn)備一張叫salary的表,結(jié)構(gòu)很簡單,只有員工名字和工資兩個(gè)字段,然后我們輸入幾條測(cè)試數(shù)據(jù),結(jié)果如下:

圖片

我們可以看到,一共6條數(shù)據(jù),工資分布在500到3500之間。那我們先來試一下

select * from salary where 1000<=salary and salary<=2000;

圖片

我們可以看到,我們查出了工資范圍在1000到2000之間的員工,這也是我們想到達(dá)到的效果。

那么我們下面再試一下:

select * from salary where 1000<=salary<=2000;

結(jié)果如下

圖片

我們可以看到,這樣的寫法沒有報(bào)錯(cuò),但也沒有達(dá)到我們預(yù)期的效果,而是把該表里所有的數(shù)據(jù)都查詢出來了。這是為什么呢?

這里面就涉及到Mysql對(duì)于同樣優(yōu)先級(jí)運(yùn)算符算式的處理了,根據(jù)Mysql的文檔,里面對(duì)于同優(yōu)先級(jí)運(yùn)算符的處理是這樣寫的:

For operators that occur at the same precedence level within an expression, evaluation proceeds left to right, with the exception that assignments evaluate right to left.

翻譯過來就是,對(duì)于在一個(gè)算式中同樣優(yōu)先級(jí)的運(yùn)算符,從左到右進(jìn)行計(jì)算,例外得是賦值語句,從右到左進(jìn)行計(jì)算。

所以對(duì)于上面的語句,Mysql的理解是這樣的:

select * from salary where (1000<=salary)<=2000;

先判斷1000<=salary這個(gè)表達(dá)式的值,然后再用這個(gè)表達(dá)式的值與2000進(jìn)行比較,將比較的結(jié)果作為條件。那么1000<=salary的值是多少呢?我們這樣寫一條語句來看一下:

select *, (1000<=salary) from salary;

結(jié)果如下:

圖片

我們可以看到,這個(gè)值都是0或1,因?yàn)?000<=salary的值是一個(gè)bool值,要么是0,要么是1。對(duì)于工資小于1000的,這個(gè)值就是0,而對(duì)于工資大于等于1000的,這個(gè)值就是1。而我們用0或1與2000比較,那么自然都是小于的了。所以結(jié)果就是條件永遠(yuǎn)成立。因此

select * from salary where 1000<=salary<=2000;

會(huì)查詢出表里面所有的值。

責(zé)任編輯:武曉燕 來源: 活在信息時(shí)代
相關(guān)推薦

2022-12-14 08:05:56

MySQLORWHERE

2010-09-08 15:51:53

SQL語句where

2021-05-28 07:36:18

MySQLWhereHive

2023-06-06 16:54:00

2024-05-31 13:04:09

2010-10-08 09:17:06

mysql修改字段

2011-04-07 09:33:22

2024-05-27 00:02:00

UpdateWhere索引

2023-10-27 11:15:18

內(nèi)存query打印

2010-09-28 10:02:16

SQL查詢

2010-11-24 17:36:02

MySQL條件查詢語句

2011-08-15 17:15:45

CASE語句Oracle給指定字段賦值

2024-12-16 09:11:57

2010-09-26 16:56:14

sql語句

2010-09-06 14:12:19

SQL相加字段

2010-09-28 15:54:55

SQL替換字段

2024-12-11 13:14:27

2022-04-10 23:42:33

MySQLSQL數(shù)據(jù)庫

2010-09-28 11:28:40

SQL字段屬性

2010-11-25 15:57:49

mysql查詢語句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)