Necesidad de expresión MySQL RLIKE para excluir ciertas cadenas que terminan en caracteres particulares
Pregunta
Así que he estado trabajando con RLIKE para tirar algunos datos en una nueva aplicación y sobre todo disfrutar de ella.
Hasta la fecha he estado utilizando consultas RLIKE para volver 3 tipos de resultados (archivos, directorios y todo).
Las consultas (y ejemplo resultados) siguientes:
**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/
Esto funciona bien para los mayores de 3 escenarios básicos, pero en ciertas situaciones estaré incluyendo sufijos '' especiales me gustaría ser excluido de los resultados de las consultas (sin tener que recurrir a las funciones de PHP para hacerlo).
Un buen ejemplo de tal secuencia sería:
user/test/public/a-test/.delete
Estos datos (hay más filas a continuación, sólo obj_namespace) se considera eliminada y en los Archivos y Todas consultas de tipo me gustaría que fuera omitido dentro de la expresión si es posible.
Lo mismo va para los /.comments y toda dicha meta datos será siempre en el mismo formato:
/.[sometext]
Me había esperado para utilizar esta característica extensamente a través de mi solicitud, así que espero que podría haber una respuesta muy simple. ( cruza los dedos )
De todos modos, gracias como siempre por cualquier / todas las respuestas y comentarios.
Solución
Parece que usted simplemente podría añadir otra condición a cada consulta:
... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...