获取具有特定数量值的路径

时间:2014-12-11 19:38:22

标签: mysql sql mysqli

我有一个包含以下值的SQL表:

+---------+----------+
| post_id |   path   |
+---------+----------+
|       1 | 1/       |
|       2 | 1/2/     |
|       3 | 1/2/3/   |
|       4 | 1/2/3/4/ |
|       5 | 1/2/5/   |
+---------+----------+

如何创建一个查询来获取具有由斜杠分隔的确切数值的路径?

例如,如果我想要所有post_ids,其中路径正好是1/%/%/(其中每个%表示单个数字),则表示返回{{1>形式的任何内容1}},1/2/3/,但不是1/2/5/

2 个答案:

答案 0 :(得分:1)

这是使用regexp的一个选项:

select *
from yourtable
where path regexp '1/[0-9]/[0-9]/$'

答案 1 :(得分:0)

有几种方法可以做到这一点:

MySQL LIKE运算符。

LIKE运算符提供两个通配符,百分比%(匹配零个或多个字符的任何字符串)和下划线_(匹配任何单个字符)。

SELECT * FROM `table` WHERE `path` LIKE '1/_/_/'

SELECT * FROM `table` WHERE `path` LIKE '1/%/%/'

MySQL正则表达式。

SELECT * FROM `table` WHERE `path` regexp '^1/[0-9]/[0-9]/$'

MySQL中的分层数据

由于此结构涉及分层数据,您可以考虑将表结构更改为表示实际层次结构的内容。 http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/有一个关于这个主题的优秀教程。