需要MySQL的RLIKE表达排除在特定的字符结束的特定字符串
题
所以,我一直在努力RLIKE拉在新的应用程序的一些数据,大多享受它。
到目前为止我一直在使用RLIKE查询已返回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/
此可以很好地用于上述3个基本场景但在某些情况下,我将包括特别“后缀”我想从查询结果中排除(而不必诉诸于PHP函数来做到这一点)。
这样的字符串的一个很好的例子将是:
user/test/public/a-test/.delete
这数据(有更多的行然后只是obj_namespace)被认为是删除,并且在文件和所有强>类型的查询我想它被表达内省略如果可能的话。
也是一样的/.comments并且所有这样的元数据将始终在相同的格式:
/.[sometext]
我所希望的在整个我的应用程序广泛使用此功能,所以我希望有可能是一个非常简单的答案。 (交叉指)
无论如何,感谢一如继往地为任何/所有响应和反馈。
解决方案
像你声音可以只添加另一个条件的每个查询:
... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...
不隶属于 StackOverflow