الصفحة الرئيسية » howto » البحث عن صفوف مع أحرف خاصة في خادم SQL

    البحث عن صفوف مع أحرف خاصة في خادم 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 لتفسير الحرف بعد \ كحرف حرفي بدلاً من حرف بدل.

    شخصيا أجد الطريقة الثانية أسهل للتعامل معها ، ويمكنك استخدامها للهروب من قوس مربع كذلك.