PostgreSQL ชอบ, ไม่ชอบ, ไวด์การ์ด (%, _ ) ตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
PostgreSQL คำสั่ง LIKE ใช้สำหรับเปรียบเทียบข้อความกับรูปแบบโดยใช้สัญลักษณ์ตัวแทนสองตัว คือ เครื่องหมายเปอร์เซ็นต์ (%) และเครื่องหมายขีดล่าง (_) บทเรียนนี้จะแสดงวิธีการใช้ LIKE และ NOT LIKE ในคำสั่ง SELECT พร้อมตัวอย่างการใช้งาน psql และ pgAdmin สำหรับแต่ละกรณี
การขอ PostgreSQL LIKE ตัวดำเนินการ LIKE จะจับคู่ค่าข้อความกับรูปแบบโดยใช้สัญลักษณ์ตัวแทน (wildcards) หากนิพจน์การค้นหาตรงกับรูปแบบ ฟังก์ชัน LIKE จะส่งคืนค่า trueไวลด์การ์ดใช้งานได้ใน WHERE ข้อของ SELECT, UPDATE, INSERTหรือ DELETE.
สิ่งที่เป็น PostgreSQL ไวด์การ์ด?
PostgreSQL รองรับการใช้สัญลักษณ์ตัวแทน LIKE สองตัว:
- เครื่องหมายเปอร์เซ็นต์ (
%): ตรงกับอักขระหรือตัวเลขศูนย์ตัว หนึ่งตัว หรือหลายตัวก็ได้ - ขีดล่าง (
_): ตรงกับอักขระหรือตัวเลขเพียงหนึ่งตัวเท่านั้น
สัญลักษณ์ทั้งสองสามารถใช้ร่วมกันได้ภายในรูปแบบเดียวกัน หากใช้ LIKE โดยไม่มีสัญลักษณ์ตัวแทนใดๆ จะทำงานเหมือนกับเครื่องหมายเท่ากับ (=) ตัวดำเนินการ
PostgreSQL ไวยากรณ์ LIKE
ไวยากรณ์พื้นฐานของคำสั่ง LIKE คือ:
expression LIKE pattern [ ESCAPE 'escape-character' ]
- การแสดงออก — นิพจน์อักขระ ซึ่งโดยทั่วไปจะเป็นชื่อคอลัมน์หรือชื่อฟิลด์
- Belt hold — นิพจน์อักขระที่มีสัญลักษณ์ตัวแทน (wildcards)
- ตัวละครหนี — ตัวเลือกเสริม ช่วยให้คุณจับคู่ตามตัวอักษรได้
%or_อักขระ เมื่อละเว้น เครื่องหมายแบ็กสแลช (\) คืออักขระหลีกเริ่มต้น
PostgreSQL ชอบด้วยสัญลักษณ์ % แทนค่าปกติ
การขอ % เครื่องหมายตรงกับอักขระศูนย์ หนึ่ง หรือมากกว่านั้น พิจารณาสิ่งต่อไปนี้ Book ตาราง:
หากต้องการค้นหาหนังสือที่มีชื่อขึ้นต้นด้วย “Lear” ให้ใช้คำสั่งค้นหาด้านล่างนี้
SELECT *
FROM
Book
WHERE
name LIKE 'Lear%';
ผลลัพธ์ของการค้นหา:
วิธีการค้นหาหนังสือที่มีคำว่า “โดย” อยู่ในชื่อหนังสือ:
SELECT *
FROM
Book
WHERE
name LIKE '%by%';
ผลลัพธ์ของการค้นหา:
PostgreSQL ชอบด้วยสัญลักษณ์ _ (Wildcard)
การขอ _ เครื่องหมายตรงกับอักขระเพียงตัวเดียว คำสั่งค้นหาต่อไปนี้จะค้นหาชื่อที่อักขระตัวแรกเป็นตัวอักษรเดี่ยวใดๆ ตามด้วย "earn" และตามด้วยคำต่อท้ายใดๆ:
SELECT *
FROM
Book
WHERE
name LIKE '_earn%';
ผลลัพธ์ของการค้นหา:
อีกตัวอย่างหนึ่ง — จับคู่ข้อความใดๆ ก็ตามที่ลงท้ายด้วย “Beginner” บวกกับอักขระอีกหนึ่งตัว:
SELECT *
FROM
Book
WHERE
name LIKE '%Beginner_';
ผลลัพธ์ของการค้นหา:
PostgreSQL ไม่ชอบ OperaTor
รวม LIKE กับ NOT เพื่อแสดงผลลัพธ์ที่ตรงกัน ไม่ ตรงตามรูปแบบ ตัวอย่างเช่น จงแสดงรายการหนังสือทุกเล่มที่ชื่อไม่ขึ้นต้นด้วยคำว่า “Post”:
SELECT *
FROM
Book
WHERE
name NOT LIKE 'Post%';
ผลลัพธ์ของการค้นหา:
มีหนังสือเพียงเล่มเดียวที่ตรงตามเงื่อนไขนี้ ตอนนี้จงเขียนรายชื่อหนังสือทุกเล่มที่มีชื่อตรงตามเงื่อนไขนี้ ไม่ มีคำว่า “Made” อยู่ด้วย:
SELECT *
FROM
Book
WHERE
name NOT LIKE '%Made%';
ผลลัพธ์ของการค้นหา:
มีสามแถวที่ตรงตามเงื่อนไข
การใช้ LIKE ร่วมกับ pgAdmin
นอกจากนี้ ยังสามารถเรียกใช้คำสั่งค้นหาเดียวกันนี้ในรูปแบบกราฟิกภายในเครื่องมือค้นหาของ pgAdmin ได้อีกด้วย
% ตัวอักษรตัวแทนใน pgAdmin
ขั้นตอน 1) เข้าสู่ระบบ pgAdmin
ขั้นตอน 2) ในแถบนำทางด้านซ้าย ให้คลิก ฐานข้อมูลจากนั้นคลิก ทดลอง.
ขั้นตอน 3) พิมพ์คำสั่งค้นหาลงในตัวแก้ไขคำสั่งค้นหา:
SELECT *
FROM
Book
WHERE
name LIKE 'Lear%';
ขั้นตอน 4) คลิก ดำเนินงาน.
ช่องแสดงผลลัพธ์จะแสดงหนังสือที่ตรงกับเงื่อนไข:
วิธีการค้นหาหนังสือที่มีคำว่า “โดย” อยู่ในชื่อ:
ขั้นตอน 1) พิมพ์ข้อความต่อไปนี้ลงในตัวแก้ไขแบบสอบถาม:
SELECT *
FROM
Book
WHERE
name LIKE '%by%';
ขั้นตอน 2) คลิก ดำเนินงาน.
หน้าต่างแสดงผลลัพธ์แสดงดังนี้:
_ ไวลด์การ์ดใน pgAdmin
ขั้นตอน 1) เข้าสู่ระบบ pgAdmin
ขั้นตอน 2) ในแถบนำทางด้านซ้าย ให้คลิก ฐานข้อมูลจากนั้นคลิก ทดลอง.
ขั้นตอน 3) พิมพ์คำสั่งค้นหาลงในตัวแก้ไขคำสั่งค้นหา:
SELECT *
FROM
Book
WHERE
name LIKE '_earn%';
ขั้นตอน 4) คลิก ดำเนินงาน.
หน้าต่างแสดงผลลัพธ์แสดงดังนี้:
ขั้นตอน 5) เรียกใช้ตัวอย่างที่สอง:
- พิมพ์คำสั่งค้นหาลงในตัวแก้ไขคำสั่งค้นหา:
SELECT *
FROM
Book
WHERE
name LIKE '%Beginner_';
- คลิก ดำเนินงาน.
หน้าต่างแสดงผลลัพธ์แสดงดังนี้:
ไม่เหมือนกับใน pgAdmin
ขั้นตอน 1) เข้าสู่ระบบ pgAdmin
ขั้นตอน 2) ในแถบนำทางด้านซ้าย ให้คลิก ฐานข้อมูลจากนั้นคลิก ทดลอง.
ขั้นตอน 3) หากต้องการแสดงรายชื่อหนังสือทุกเล่มที่ชื่อไม่ขึ้นต้นด้วย “Post” ให้พิมพ์:
SELECT *
FROM
Book
WHERE
name NOT LIKE 'Post%';
ขั้นตอน 4) คลิก ดำเนินงาน.
หน้าต่างแสดงผลลัพธ์แสดงดังนี้:
เพื่อแสดงรายชื่อหนังสือที่ชื่อหนังสือไม่มีคำว่า “Made”:
ขั้นตอน 1) พิมพ์ข้อความต่อไปนี้ลงในตัวแก้ไขแบบสอบถาม:
SELECT *
FROM
Book
WHERE
name NOT LIKE '%Made%';
ขั้นตอน 2) คลิก ดำเนินงาน.
หน้าต่างแสดงผลลัพธ์แสดงดังนี้:
ดาวน์โหลดฐานข้อมูลที่ใช้ในบทช่วยสอนนี้.
























