โฮมเพจ » ทำอย่างไร » ค้นหาแถวด้วยอักขระพิเศษใน SQL Server

    ค้นหาแถวด้วยอักขระพิเศษใน SQL Server

    ในขณะที่การแก้ไขปัญหาการเขียนโปรแกรมวันนี้ฉันสังเกตเห็นว่าคุณไม่สามารถใช้การค้นหา LIKE สำหรับคอลัมน์สตริงที่มีอักขระพิเศษเช่น% หรือ _ โดยไม่ต้องใช้ไวยากรณ์พิเศษ การค้นหาปัญหาใช้เวลาเพียงไม่กี่นาที แต่การจดจำไวยากรณ์นั้นง่ายกว่าเสมอหากคุณเขียนถึงมัน.

    ใช่แล้วโพสต์นี้มีไว้เพื่อประโยชน์ของฉันเท่านั้น หวังว่ามันจะช่วยคนอื่นด้วย.

    สมมติว่าคุณต้องการค้นหาเขตข้อมูลใด ๆ ที่มีข้อความ“ 100%” ดังนั้นคุณจึงรวบรวมแบบสอบถามนี้:

    SELECT * FROM tablename WHERE fieldname เช่น '% 100 %%'

    แทนที่จะเป็นสิ่งที่คุณต้องการคุณจะได้แถวทั้งหมดที่มี“ 100” และแถวที่มี“ 100%”.

    ปัญหาที่นี่คือ SQL Server ใช้เครื่องหมายเปอร์เซ็นต์ขีดล่างและวงเล็บเหลี่ยมเป็นอักขระพิเศษ คุณไม่สามารถใช้มันเป็นตัวอักษรธรรมดาในการสืบค้นแบบ LIKE ได้โดยไม่ต้องหลบหนี.

    Square Bracket Escape

    คุณสามารถล้อมรอบ% หรือ _ ด้วยเครื่องหมายวงเล็บเหลี่ยมเพื่อบอก SQL Server ว่าอักขระภายในเป็นอักขระปกติ.

    SELECT * FROM tablename WHERE fieldname เช่น '% 100 [%]%'

    T-SQL ESCAPE ไวยากรณ์

    หรือคุณสามารถผนวกโอเปอเรเตอร์ของ ESCAPE ลงในคิวรีของคุณและเพิ่ม \ อักขระก่อนที่ค่าที่คุณต้องการจะหนี.

    SELECT * จากแท็บแท็บ WHERE ชื่อเขตข้อมูลเช่น '% 100 \ %%' ESCAPE '\'

    ส่วนของการสอบถาม ESCAPE '\' จะบอกให้เอนจิน SQL ทำการแปลอักขระหลังจาก \ เป็นตัวอักษรแทนที่จะเป็นไวด์การ์ด.

    โดยส่วนตัวแล้วฉันพบว่าวิธีที่สองง่ายต่อการจัดการและคุณสามารถใช้วิธีนี้เพื่อหลีกเลี่ยงวงเล็บเหลี่ยมได้เช่นกัน.