如何选择返回与精确模式和该模式的第一个段匹配的行的结果?

时间:2010-12-22 20:49:23

标签: postgresql

我一直在研究关于模式匹配的PostgreSQL 9.0文档,但我仍然不明白如何获得我想要的结果。

鉴于表格sandbox如下所示:id, segment

包含这个:

1, foo
2, foo-bar
3, foo-bar-baz

当我选择foo-bar-baz并且它也匹配片段的“根”(在这种情况下为foo)并返回时,我是如何做到的:

1, foo
3, foo-bar-baz

同样,搜索foo-bar将返回:

1, foo
2, foo-bar

编辑:

虽然a_horse_with_no_name的解决方案工作得很好。我还是想知道是否还有其他答案。

1 个答案:

答案 0 :(得分:2)

这样的事情:

SELECT *
FROM sandbox
WHERE segment = 'foo-bar-baz'
OR    segment = (string_to_array ('foo-bar-baz', '-')) [1];