البحث عن صفوف مع أحرف خاصة في خادم SQL
أثناء استكشاف مشكلات البرمجة وإصلاحها ، لاحظت أنه لا يمكنك استخدام بحث LIKE لأعمدة الأوتار التي تحتوي على أحرف خاصة مثل٪ أو _ بدون استخدام بنية خاصة. استغراق المشكلة استغرق بضع دقائق فقط ، لكن تذكر بناء الجملة يكون دائمًا أسهل إذا كتبت عنه.
لذلك نعم ، هذه الوظيفة هي فقط لمصلحتي. نأمل أن يساعد شخص آخر أيضا.
لنفترض أنك تريد البحث عن أي حقول تحتوي على النص "100٪" ، لذلك يمكنك وضع هذا الاستعلام معًا:
SELECT * FROM tablename WHERE fieldname LIKE '٪ 100 ٪٪'
بدلاً من ما تريده ، ستحصل على جميع الصفوف التي تحتوي على "100" بالإضافة إلى الصفوف التي تحتوي على "100٪".
المشكلة هنا أن يستخدم SQL Server علامة النسبة المئوية و تسطير أسفل السطر و الأقواس المربعة كأحرف خاصة. أنت ببساطة لا يمكن استخدامها كحرف عادي في استعلام LIKE دون الهروب منها.
ساحة قوس الهروب
يمكنك إحاطة٪ أو _ بأقواس مربعة لإخبار SQL Server بأن الحرف الداخلي هو حرف عادي.
SELECT * FROM tablename WHERE fieldname LIKE '٪ 100 [٪]٪'
T-SQL ESCAPE بناء الجملة
بدلاً من ذلك ، يمكنك إلحاق عامل التشغيل ESCAPE بالاستعلام الخاص بك ، وإضافة حرف \ قبل القيمة التي تريد الفرار منها.
SELECT * FROM tablename WHERE fieldname LIKE '٪ 100 \ ٪٪' ESCAPE '\'
يخبر جزء ESCAPE '\' من الاستعلام مشغل SQL لتفسير الحرف بعد \ كحرف حرفي بدلاً من حرف بدل.
شخصيا أجد الطريقة الثانية أسهل للتعامل معها ، ويمكنك استخدامها للهروب من قوس مربع كذلك.