ตัวดำเนินการ Like
เปรียบเทียบ
นิพจน์ สายอักขระกับรูปแบบในนิพจน์
SQL
ไวยากรณ์
expression Like “
pattern”
ไวยากรณ์ของตัวดำเนิน การ
Like มีส่วนต่างๆ เหล่านี้
ส่วน | คำอธิบาย |
expression | นิพจน์ SQL ที่ใช้ในส่วนคำสั่ง WHERE |
pattern | สายอักขระหรือสายอักขระของตัวอักษร ซึ่ง expression ถูกนำมาเปรียบเทียบด้วย |
หมายเหตุ
คุณสามารถใช้ตัวดำเนินการ
Like เพื่อหาค่าในเขตข้อมูลหนึ่ง ซึ่งตรงกันกับรูปแบบที่คุณระบุ สำหรับ
pattern คุณสามารถระบุค่าที่สมบูรณ์ (เช่น
Like “Smith”
) หรือคุณสามารถใช้
สัญลักษณ์ ตัวแทน เพื่อหาช่วงของค่าก็ได้ (เช่น
Like “Sm*”)
ใน นิพจน์ คุณสามารถใช้ตัวดำเนินการ
Like เพื่อเปรียบเทียบค่าของเขตข้อมูลกับนิพจน์สายอักขระได้ ตัวอย่างเช่น ถ้าคุณใส่
Like “C*”
ในแบบสอบถาม SQL แบบสอบถามจะส่งกลับค่าของเขตข้อมูลทั้งหมดที่ขึ้นต้นด้วยตัวอักษร C ใน
แบบ สอบถามแบบพารามิเตอร์ คุณสามารถพร้อมท์ผู้ใช้เพื่อให้ใส่รูปแบบที่จะใช้ในการค้นหาได้
ตัวอย่าง ต่อไปนี้จะส่งกลับข้อมูลที่ขึ้นต้นด้วยตัวอักษร P ตามด้วยตัวอักษรใดก็ได้ระหว่าง A ถึง F และตัวเลขสามตัว
Like “P[A-F]###”
ตารางต่อไปนี้แสดงวิธีที่คุณสามารถใช้
Like เพื่อทดสอบนิพจน์สำหรับรูปแบบต่างๆ
ลักษณะการเปรียบเทียบ |
รูปแบบ | ตรงกัน
(ส่งกลับค่า True) | ไม่ตรงกัน
(ส่งกลับค่า False) |
อักขระหลายอักขระ | a*a | aa, aBa, aBBBa | aBC |
| *ab* | abc, AABB, Xab | aZb, bac |
อักขระพิเศษ | a[*]a | a*a | aaa |
อักขระหลายอักขระ | ab* | abcdefg, abc | cab, aab |
อักขระตัวเดียว | a?a | aaa, a3a, aBa | aBBBa |
ตัวเลขตัวเดียว | a#a | a0a, a1a, a2a | aaa, a10a |
ช่วงของอักขระ | [a-z] | f, p, j | 2, & |
อักขระภายนอกช่วง | [!a-z] | 9, &, % | b, a |
ไม่ใช่ตัวเลข | [!0-9] | A, a, &, ~ | 0, 1, 9 |
หลายแบบร่วมกัน | a[!b-m]# | An9, az0, a99 | abc, aj0 |
การใช้สัญลักษณ์ตัวแทนใน การเปรียบเทียบสายอักขระ
การจับคู่กับรูปแบบที่มีอยู่แล้วภายในเป็นเครื่องมือเอนกประสงค์สำหรับ การเปรียบเทียบสายอักขระ ตารางต่อไปนี้จะแสดงสัญลักษณ์ตัวแทนที่คุณสามารถใช้ได้กับตัวดำเนินการ
Like และจำนวนของตัวเลขหรือสายอักขระที่ตรงกัน
อักขระในรูปแบบ | สิ่งที่ตรงกันในนิพจน์ |
? หรือ _ (ขีดเส้นใต้) | อักขระใดๆ หนึ่งอักขระ |
* หรือ % | กี่อักขระก็ได้ |
# | ตัวเลขหลักเดียวใดๆ (0— 9) |
[charlist] | อักขระใดๆ หนึ่งอักขระในcharlist |
[!charlist] | อักขระใดๆ หนึ่งอักขระที่ไม่อยู่ใน charlist |
คุณสามารถใช้กลุ่มของอักขระอย่างน้อยหนึ่งอักขระ (
charlist) ที่อยู่ภายในเครื่องหมายวงเล็บเหลี่ยม ([ ]) เพื่อให้ตรงกับอักขระใดๆ หนึ่งอักขระใน
นิพจน์ได้ และ
charlist สามารถมีอักขระได้เกือบทุกอักขระที่อยู่ในชุดอักขระแบบ
ANSI รวมทั้งตัวเลขด้วย คุณสามารถใช้อักขระพิเศษวงเล็บเหลี่ยมเปิด ([ ) เครื่องหมายคำถาม (?) สัญลักษณ์ตัวเลข (#) และ
เครื่อง หมายดอกจัน (*) เพื่อจับคู่กันโดยตรงก็ต่อเมื่ออยู่ในเครื่องหมายวงเล็บเหลี่ยม คุณไม่สามารถใช้เครื่องหมายวงเล็บเหลี่ยมปิด ( ]) ภายในกลุ่มเพื่อจับคู่กัน แต่คุณสามารถใช้เป็นอักขระแต่ละอักขระจากภายนอกกลุ่มได้
นอก จากรายการอักขระธรรมดาที่อยู่ภายในเครื่องหมายวงเล็บเหลี่ยมแล้ว
charlist ยังสามารถระบุช่วงของอักขระได้โดยใช้เครื่องหมายขีดกลาง (-) เพื่อแยกขอบเขตบนและล่างของช่วง ตัวอย่างเช่น การใช้ [A-Z] ใน
รูปแบบ จะให้ผลลัพธ์ที่ตรงกัน ถ้าตำแหน่งของอักขระที่เกี่ยวข้องใน
นิพจน์มี อักษรตัวพิมพ์ใหญ่ใดๆ ในช่วง A ถึง Z คุณสามารถรวมหลายช่วงไว้ภายในวงเล็บเหลี่ยมได้โดยไม่ต้องมีเครื่องหมายคั่น ช่วง ตัวอย่างเช่น [a-zA-Z0-9] จะจับคู่อักขระที่เป็นตัวเลขหรือตัวอักษรใดๆ
ให้ สังเกตว่าสัญลักษณ์ตัวแทน SQL ในรูปแบบ ANSI อันได้แก่ (%) และ (_) นั้น จะใช้ได้กับ Microsoft® Jet รุ่น 4.X และ Microsoft OLE DB Provider for Jet เท่านั้น โดยจะถือเสมือนเป็นตัวอักษรถ้าใช้งานผ่าน Microsoft Access หรือ DAO
กฎที่สำคัญอื่นๆ สำหรับการจับคู่รูปแบบมีดังต่อไปนี้
- เครื่องหมายอัศเจรีย์ (!) ที่ขึ้นต้น charlist หมายความว่ามีการจับคู่ที่ตรงกันถ้าพบอักขระใดๆ ใน นิพจน์ ยกเว้นอักขระใน charlist เมื่อใช้เครื่องหมายอัศเจรีย์นอกวงเล็บเหลี่ยม เครื่องหมายอัศเจรีย์จะจับคู่กันเอง
- คุณสามารถใช้เครื่องหมายขีดกลาง (-) ที่ส่วนต้น (หลังเครื่องหมายอัศเจรีย์ ถ้าใช้) หรือที่ส่วนท้ายของ charlist เพื่อให้จับคู่กันเอง ในตำแหน่งอื่นๆ เครื่องหมายขีดกลางจะระบุช่วงของอักขระ ANSI
- เมื่อคุณระบุช่วงของอักขระ อักขระต่างๆ จะต้องปรากฏในลำดับการจัดเรียงจากน้อยไปหามาก (A-Z หรือ 0-100) โดย [A-Z] จะเป็นรูปแบบที่ถูกต้อง แต่ [Z-A] ไม่ถูกต้อง
- ลำดับของอักขระ [ ] จะถูกละเว้น โดยจะพิจารณาเป็นสาย อักขระที่มีความยาวเป็นศูนย์ (“”)