所以我一直在与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)被视为已删除,并且在文件和所有类型查询中我希望在表达式中省略它如果可能的话。
同样适用于/.com,所有这些元数据将始终采用相同的格式:
/.[sometext]
我希望在我的应用程序中广泛使用此功能,所以我希望可能有一个非常简单的答案。 (穿过手指)
无论如何,一如既往地感谢任何/所有回复和反馈。
答案 0 :(得分:0)
听起来你可以为每个查询添加另一个条件:
... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...