iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
0
Software Development

SQL 30天手把手入門系列 第 30

Day30 - 述詞和完賽結語

述詞 ( Predicate ) 的回傳值皆為 True / False,因此在撰寫 SQL 的篩選條件時,是不可或缺的角色。
以下列舉出一些在設定條件時,十分常用的:

LIKE - 搜尋符合的字串

運用 LIKE 可以讓資料庫進行「部分一致」的搜尋,細分為以下三類:

  1. 開頭一致
  2. 中間一致
  3. 結尾一致

關鍵符號子是 "%":代表所有字串(含空白)的意思

/* 1. 以 ddd 開頭的所有字串 */
LIKE 'ddd%'
/* 2. 字串間有 ddd */
LIKE '%ddd%'
/* 3. 以 ddd 結尾的字串 */
LIKE '%ddd'

BETWEEN - 範圍搜尋

例如要搜尋 Product 中,sell_price 為 50 到 2000 。

SELECT * FROM Product WHERE sell_price BETWEEN 50 AND 2000;

Day30Result1

IN - 很多 OR 條件的時候就很實用

假設要搜尋 Product 中,sell_price 為 30, 40, 80, 18000。你可以寫成以下形式,但會很難維護:

SELECT * FROM Product
WHERE sell_price = 30
OR sell_price = 40
OR sell_price = 80
OR sell_price = 18000;

用 IN 的話,可以簡潔的表達:

SELECT * FROM Product
WHERE sell_price IN (30,40,80,18000);

Day30Result2

IS NULL / IS NOT NULL - 找出 NULL 欄位必備

因為 NULL 在 SQL 中是個特別的存在,無法使用 "=" 來判別是否為 NULL,要改用 IS NULL。
例如要找出 INFO 為 NULL 的:

SELECT * FROM Product WHERE info IS NULL;
/*反之則改成 IS NOT NULL*/
SELECT * FROM Product WHERE info IS NOT NULL;

Day30Result3

完賽結語

「每天一篇技術文章,並持續 30 天」看似簡單,卻是個心智、體力的長期競賽。撰寫完這 30 天的 SQL 相關文章,除幫自己統整一下過往所學以及不足之外,也訓練自己輸出點東西給大家。這些整理後的文字記錄,若能幫助他人在學習程式的路上節省心力,就很值得了。


上一篇
Day29 - 日期、轉換函數
系列文
SQL 30天手把手入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言