ฉันจะหลีกเลี่ยงเครื่องหมายเปอร์เซ็นต์ใน T-SQL ได้อย่างไร


188

นี้คำถามนอกจากนี้ยังมีคำตอบแต่มันกล่าวถึง DB2 โดยเฉพาะ

ฉันจะค้นหาสตริงโดยใช้LIKEที่มี%สัญลักษณ์เปอร์เซ็นต์อยู่แล้วได้อย่างไร LIKEประกอบการใช้%สัญลักษณ์ที่มีความหมายสัญลักษณ์

คำตอบ:


285

ใช้วงเล็บ ดังนั้นเพื่อมองหา 75%

WHERE MyCol LIKE '%75[%]%'

สิ่งนี้ง่ายกว่า ESCAPE และทั่วไปกับ RDBMS ส่วนใหญ่


2
นอกจากนี้ยังทราบว่าท่านจะได้ไม่ต้องหลบหนีสัญลักษณ์เปอร์เซ็นต์ในโครงสร้างอื่น ๆ เช่นฟังก์ชั่นการใช้งานเรียงต่อกัน ฯลฯ
โบรนเดวีส์


2
[_]คุณสามารถหลบหนียังอักขระตัวแทนขีดเกินไป: คุณจะหนีจากวงเล็บเหลี่ยมเปิดได้อย่างไร? [[]เช่นนี้ sqlserver2000.databases.aspfaq.com/…
Csaba ถึง

การใช้ส่วนคำสั่ง ESCAPE นั้นง่ายต่อการเข้าใจมากกว่ากลไกการอ้างอิงของสมองที่เสียหาย
Suncat2000

52

คุณสามารถใช้คำหลักที่มีESCAPE LIKEเพียงเติมอักขระที่ต้องการ (เช่น '!') แต่ละ%เครื่องหมายที่มีอยู่ในสตริงแล้วเพิ่มESCAPE '!'(หรืออักขระที่คุณเลือก) ไปยังจุดสิ้นสุดของข้อความค้นหา

ตัวอย่างเช่น:

SELECT *
FROM prices
WHERE discount LIKE '%80!% off%'
ESCAPE '!'

สิ่งนี้จะทำให้ฐานข้อมูลถือว่า 80% เป็นส่วนที่แท้จริงของสตริงเพื่อค้นหาและไม่ใช่ 80 (wildcard)

เอกสาร MSDN สำหรับ LIKE



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.