Necesidad de expresión MySQL RLIKE para excluir ciertas cadenas que terminan en caracteres particulares

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

  •  21-09-2019
  •  | 
  •  

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.

¿Fue útil?

Solución

Parece que usted simplemente podría añadir otra condición a cada consulta:

... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top