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