MySQL where 條件字句查詢

2020-09-23 16:00:48

where 條件字句

搜尋條件可由一個或多個邏輯表示式組成 , 結果一般為布林值

邏輯運運算元

運運算元語法描述
and &&a and b a && b邏輯與 兩個為真, 結果為真
or ||a or b a || b邏輯或 一個為真, 結果為真
not !not a !a邏輯非 真為假, 假為真
-- ==========  where  ============
SELECT `name`,`sex` FROM student

-- 查詢 name 數值在 95 ~ 100 之間的
SELECT `NAMe`, `address` FROM student WHERE `NAME` >= 95 AND `NAME`<= 100
-- and  &&
SELECT `NAMe`, `address` FROM student WHERE `NAME` >= 95 && `NAME` <= 100
-- between and (區間)
SELECT `name`,`address` FROM student WHERE `name` BETWEEN 95 AND 100

-- 查詢name 不等於 1 的同學
SELECT `NAMe`, `address` FROM student WHERE `NAME` != 1 AND `NAME` < 10
-- not 
SELECT `NAMe`, `address` FROM student WHERE NOT `NAME` = 100 AND `NAME` > 90


模糊查詢: 比較運運算元

運運算元語法描述
is nulla is null如果a為null, 結果為真
is not nulla is not null如果a不為null, 結果為真
between and3 between 1 and 5如果 3 在 1 和 5 之間, 結果為真
Likea like bsql匹配, 如果a匹配b, 結果為真
Ina in (abcd, pdosa, …)若 a 在 (abcd, pdosa, …) 中, 結果為真
-- ==========  模糊查詢  ============
-- 查詢 姓張的  like 結合  %(代表0到任意個字元)  _(代表一個字元)
SELECT `name` FROM student WHERE `name` LIKE '張%'
-- 查詢 姓張的 後面只有一個字的
SELECT `name` FROM student WHERE `name` LIKE '張_'
-- 查詢 姓張的 後面有兩個字的
SELECT `name` FROM student WHERE `name` LIKE '張__'
-- 查詢 名字中有張字的
SELECT `name` FROM student WHERE `name` LIKE '%張%'


-- ==== in 具體的一個或多個值 ====
-- 查詢 1,2,3 號同學
SELECT `id`,`name` FROM student WHERE `id` IN (1,2,3)
-- 查詢 北京 的同學
SELECT `id`,`name`,`address` FROM student WHERE `address` IN ('北京')

-- ==== null , not null ====
-- 查詢地址為空或者null的
SELECT `name`,`address` FROM student WHERE `address`='' OR `address` IS NULL

-- 查詢有日期的  不為空的
SELECT `name`,`address`,`birthday` FROM student WHERE `birthday` IS NOT NULL

-- 查詢沒有日期的  為空的
SELECT `name`,`address`,`birthday` FROM student WHERE `birthday` IS NULL