"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يتطلب MySQL خطوط مائلة عكسية مزدوجة للهروب من الشرطة المائلة العكسية في استعلامات LIKE ولكن ليس في استعلامات يساوي (=)؟

لماذا يتطلب MySQL خطوط مائلة عكسية مزدوجة للهروب من الشرطة المائلة العكسية في استعلامات LIKE ولكن ليس في استعلامات يساوي (=)؟

تم النشر بتاريخ 2024-11-01
تصفح:942

Why Does MySQL Require Double Backslashes to Escape a Backslash in LIKE Queries But Not in Equals (=) Queries?

فهم الهروب من الشرطة المائلة () في MySQL في الاستعلامات

إنها ممارسة شائعة في MySQL للهروب من الأحرف الخاصة، بما في ذلك الشرطة المائلة العكسية ()، في الاستعلامات لمنع تعارض التفسير. ومع ذلك، تنشأ حالة شاذة غريبة عند مقارنة سلوك العامل المتساوي (=) وعامل التشغيل LIKE فيما يتعلق بالشرطة المائلة العكسية.

العامل المتساوي (=)

في حالة عامل التشغيل يساوي، لا توجد شرطة مائلة عكسية إضافية مطلوبة للهروب من الشرطة المائلة العكسية داخل مصطلح البحث. على سبيل المثال، يسترد الاستعلام التالي الصف الذي يحتوي فيه عمود العنوان على القيمة "test\".

SELECT * FROM `titles` WHERE title = 'test\';

محلل MySQL يفسر تلقائيًا الشرطة المائلة العكسية في مصطلح البحث كحرف حرفي، ومن ثم يتم الاسترداد الناجح.

عامل التشغيل LIKE

بخلاف عامل التشغيل المتساوي، يتطلب عامل التشغيل LIKE شرطة مائلة عكسية إضافية للهروب من الشرطة المائلة العكسية في مصطلح البحث. وذلك لأن عامل التشغيل LIKE يقوم بمطابقة النمط، وتعمل الشرطة المائلة العكسية كحرف هروب افتراضيًا في SQL. وبالتالي، يسترد الاستعلام التالي نفس الصف مثل الاستعلام السابق:

SELECT * FROM `titles` WHERE title LIKE 'test\\\\';

في هذا الاستعلام، الخطوط المائلة العكسية المزدوجة تأكد من تفسير الشرطة المائلة العكسية المفردة في مصطلح البحث حرفيًا على أنها حرف شرطة مائلة عكسية.

شرح

يعود السبب وراء هذا السلوك إلى كيفية معالجة MySQL لأنماط LIKE . يقوم المحلل اللغوي في البداية بإزالة الخطوط المائلة العكسية من مصطلح البحث. ومع ذلك، عند إجراء مطابقة النمط لاحقًا، تتم إزالة الخطوط المائلة العكسية مرة أخرى. يؤدي هذا إلى ترك شرطة مائلة عكسية واحدة لتتم مطابقتها مع النموذج. لضمان التعامل مع الشرطة المائلة العكسية كحرف حرفي، يلزم وجود شرطة مائلة عكسية إضافية.

تغيير حرف الهروب

يسمح لك MySQL بتحديد حرف هروب مختلف لأنماط LIKE باستخدام جملة ESCAPE. على سبيل المثال، يستخدم الاستعلام التالي حرف توجيه الإخراج (|) كحرف هروب:

SELECT * FROM `titles` WHERE title LIKE 'test\\' ESCAPE '|';

In في هذا المثال، يتم تفسير الشرطة المائلة العكسية المفردة في مصطلح البحث حرفيًا لأنها مسبوقة بحرف الهروب المحدد.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3