Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

เงื่อนไข LIKE ใน SQL Server

เงื่อนไข LIKE ใน SQL Server (Transact-SQL) อนุญาตให้ใช้อักขระตัวแทนในส่วนคำสั่ง WHERE ในคำสั่ง SELECT, INSERT, UPDATE และ DELETE ซึ่งใช้เพื่อจับคู่รูปแบบ

พี>

เงื่อนไข LIKE ไวยากรณ์

 'biểu thức' LIKE 'mẫu' [ ESCAPE 'Escape_Character' ] 

ชื่อตัวแปรหรือค่าตัวแปร

นิพจน์

นิพจน์อักขระ เช่น คอลัมน์หรือฟิลด์ข้อมูล

รูปแบบ

รูปแบบอักขระมีตัวอย่างที่เรียงซ้อนกัน สามารถเลือกตัวอย่างได้จากตารางด้านล่าง

สัญลักษณ์ตัวแทน อธิบาย% การค้นหาสตริงอักขระสำหรับความยาวใดๆ (รวมถึงความยาว 0) _ การค้นหาอักขระ [^] เพื่อค้นหาอักขระใดๆ ที่ไม่มีอยู่ในอักขระ [^] (เช่น [ ^ abc] จะพบอักขระใดๆ ที่ไม่ใช่ a b หรือ c)

Escape Character

ตัวเลือก แปลเป็นอักขระข้ามชั่วคราว ช่วยให้คุณตรวจสอบว่าอักขระอย่าง% หรือ _ ถูกใช้ตามตัวอักษรหรือไม่ (ในรูปของค่าคงที่) แต่ไม่ใช่อักขระพิเศษ

ตัวอย่างเช่น - ใช้ wildcard%

ใช้ wildcard% ในเงื่อนไข LIKE ของ SQL Server เช่น โดยมองหาพนักงานที่ขึ้นต้นด้วยตัวอักษร 'B'

  S ELECT * 
FROM nhanvien
WHERE ho LIKE 'B%';

คุณสามารถใช้อักขระ % ในสตริงเดียวกันกับตัวอย่างด้านล่าง

  SELE CT * 
FROM nhanvien
WHER ho LIKE '%0%';

ผลลัพธ์สำหรับพนักงานที่มีตัวอักษร 'o'

ตัวอย่างเช่น - ใช้ wildcard _

โปรดทราบว่าอักขระ _ ใช้สำหรับค้นหาอักขระ 1 ตัวเท่านั้น (ความยาวคือ 1)

  S ELECT * 
FROM nhanvien
WHERE ho LIKE 'Ad_m';

ในตัวอย่างนี้ ผลลัพธ์ที่ได้คือพนักงานที่มีชื่อ 4 ตัวอักษร โดยที่ตัวอักษรสองตัวแรกคือ 'Ad' และตัวอักษรสุดท้ายคือ 'm' ตัวอย่างเช่น Adam, Adem, Adim, Adom .

นี่คือตัวอย่างอื่น

 SELECT * 
FROM nhanvien
WHERE so_nhanvien LIKE '123_';

คุณกำลังมองหาจำนวนพนักงานที่มีเพียง 3 ใน 4 หลักเท่านั้น ในตัวอย่างข้างต้น ผลลัพธ์ที่ส่งคืนมี 10 รายการ ค่าที่ขาดหายไปคือ 0 ถึง 9:1230, 1231, 1232 .

ตัวอย่างเช่น - ใช้สัญลักษณ์แทน []

โปรดทราบว่าสิ่งที่อยู่ในวงเล็บเหลี่ยมคืออักขระที่คุณต้องการและตรงกับรูปแบบ

 SELECT * 
FROM nhanvien
WHERE ten LIKE 'Sm[iy]th';

ผลลัพธ์ที่ได้ในตัวอย่างนี้คือพนักงานที่มีชื่อมี 5 ตัวอักษร โดย 2 ตัวอักษรแรกคือ 'Sm' และ 2 ตัวอักษรสุดท้ายคือ 'th' ตัวกลาง ตัวอักษรอาจเป็น 'i' หรือ 'y' ดังนั้นผลลัพธ์อาจเป็น Smith หรือ Smyth

ตัวอย่างเช่น - ใช้ wildcard [^]

สิ่งที่อยู่ในวงเล็บเหลี่ยมคืออักขระที่คุณไม่ต้องการให้ตรงกับรูปแบบ

  S ELECT * 
FROM nhanvien
WHERE ten LIKE 'Smy[^iy]th';

ส่งผลให้ชื่อพนักงานมี 5 ตัวอักษร โดยที่ตัวอักษรสองตัวแรกคือ 'Sm' สองคำสุดท้ายคือ 'th' และคำกลางไม่ใช่ ' ฉัน' หรือ 'y' ผลลัพธ์อาจเป็น Smath, Smeth

ตัวอย่างเช่น - ใช้ตัวดำเนินการ NOT

นี่คือวิธีใช้ตัวดำเนินการ NOT ใน SQL Server พร้อมสัญลักษณ์แทน คุณสามารถค้นหานามสกุลของพนักงานที่ไม่ได้ขึ้นต้นด้วยตัวอักษร 'B' โดยมีเงื่อนไข LIKE

  SE LECT * 
FROM nhanvien
WHERE ho NOT LIKE 'B%';

โดยการตั้งค่าโอเปอเรเตอร์ NOT ก่อนเงื่อนไข LIKE คุณจะพบกลุ่มพนักงานที่ไม่ได้ขึ้นต้นด้วย 'B'

ตัวอย่างเช่น ใช้อักขระเพื่อข้ามอักขระ Escape

การใช้อักขระข้ามเป็นสิ่งสำคัญเมื่อเปรียบเทียบรูปแบบ เพื่อหลีกเลี่ยงความเข้าใจผิดเกี่ยวกับอักขระพิเศษเมื่อคุณต้องการใช้เป็นค่าคงที่

ตัวอย่างเช่น หากคุณต้องการค้นหาอักขระ a% หรือ a_ เป็นต้น

โปรดทราบว่าสามารถกำหนดอักขระได้เพียง 1 ตัวเท่านั้น (ความยาวคือ 1)

  SELEC T * 
FROM nhanvien
WHERE secret_hint LIKE '123!%455' ESCAPE '!';

คำสั่งนี้จะส่งคืนพนักงานที่มี secret_hint คือ 123% 455 อักขระ% จะไม่ใช้กับความหมายก่อนหน้าอีกต่อไป แต่เป็นอักขระปกติ

นี่เป็นตัวอย่างที่ซับซ้อนกว่านี้

  SELE CT * 
FROM nhanvien
WHERE secret_hint LIKE 'H %!%' ESCAPE '!';

ผลลัพธ์ของเงื่อนไข LIKE คือ พนักงานที่มี secret_hint เริ่มต้นด้วย 'H' และลงท้ายด้วย '%' เช่น 'Help%'

คุณสามารถใช้อักขระละเว้นกับอักขระทั้งหมด _ ในเงื่อนไข LIKE ได้

  SEL ECT * 
FROM nhanvien
WHERE secret_hint LIKE 'H%!_' ESCAPE '!';

ตัวอย่างนี้ส่งคืนพนักงานด้วย secret_hint ที่ขึ้นต้นด้วย 'H' และลงท้ายด้วย '_' เช่น 'Help_'