بحاجة إلى تعبير mysql rike لاستبعاد سلاسل معينة تنتهي في شخصيات معينة

StackOverflow https://stackoverflow.com/questions/2496908

  •  21-09-2019
  •  | 
  •  

سؤال

لذلك كنت أعمل مع 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]+$' ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top