1

所以我一直在与 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]

我希望在整个应用程序中广泛使用此功能,所以我希望可能有一个非常简单的答案。(交叉手指

无论如何,一如既往地感谢任何/所有回复和反馈。

4

1 回答 1

0

听起来您可以为每个查询添加另一个条件:

... AND obj_namespace NOT RLIKE '/[.][a-z]+$' ...
于 2010-03-23T01:26:51.243 回答