بحاجة إلى تعبير mysql rike لاستبعاد سلاسل معينة تنتهي في شخصيات معينة
سؤال
لذلك كنت أعمل مع RIKES لسحب بعض البيانات في تطبيق جديد والاستمتاع بها في الغالب.
حتى الآن كنت أستخدم استفسارات RIKE لإرجاع 3 أنواع من النتائج (الملفات والدلائل وكل شيء).
يتبع الاستعلامات (ونتائج مثال):
**All**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+$' ORDER BY obj_namespace
user/test/public/a-test/.comment
user/test/public/a-test/.delete
user/test/public/directory/
user/test/public/directory/image.jpg
user/test/public/index
user/test/public/site-rip
user/test/public/site-rip2
user/test/public/test-a
user/test/public/widget-test
**Files**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+[-0-9a-z_.]+$' ORDER BY obj_namespace
user/test/public/a-test/.comment
user/test/public/a-test/.delete
user/test/public/directory/image.jpg
user/test/public/index
user/test/public/site-rip
user/test/public/site-rip2
user/test/public/test-a
user/test/public/widget-test
**Directories**:
SELECT * FROM public WHERE obj_owner_id='test' AND obj_namespace
RLIKE '^user/test/public/[-0-9a-z_./]+/$' ORDER BY obj_namespace
user/test/public/directory/
هذا يعمل بشكل جيد للسيناريوهات الأساسية الثلاثة المذكورة أعلاه ، لكن في ظل مواقف معينة ، سأشمل "اللواحق" الخاصة ، أود أن أستبعد من نتائج الاستعلامات (دون الحاجة إلى اللجوء إلى وظائف PHP للقيام بذلك).
مثال جيد على مثل هذه السلسلة هو:
user/test/public/a-test/.delete
يتم اعتبار أن البيانات (هناك المزيد من الصفوف ثم OBJ_NAMESPACE) محذوفة وفي الملفات و الجميع اكتب الاستعلامات التي أود حذفها في التعبير إن أمكن.
الشيء نفسه ينطبق على /.compments وستكون جميع بيانات التعريف هذه دائمًا بنفس التنسيق:
/.[sometext]
كنت آمل في استخدام هذه الميزة على نطاق واسع خلال طلبي ، لذلك آمل أن يكون هناك إجابة بسيطة للغاية. ((يعبر الأصابع)
على أي حال ، شكرًا كما هو الحال دائمًا على أي/جميع الردود والتعليقات.
المحلول
يبدو أنه يمكنك فقط إضافة حالة أخرى إلى كل استعلام:
... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...