RE: Ltree pattern matching
От | Terry Gilbert |
---|---|
Тема | RE: Ltree pattern matching |
Дата | |
Msg-id | MN2PR05MB69103A367F4C2E3D362F8480F1959@MN2PR05MB6910.namprd05.prod.outlook.com обсуждение исходный текст |
Ответ на | Re: Ltree pattern matching (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-docs |
So, when it says "* prefix matching matches each word separately" it means foo_bar* will match a label with the first word beginning with foo and a second word beginning with bar? Hmmm I'll think about it, maybe I can suggest helpful wording. Thank you for clarifying! Terry -----Original Message----- From: Tom Lane <tgl@sss.pgh.pa.us> Sent: Friday, November 12, 2021 10:37 AM To: Terry Gilbert <terry.gilbert@sas.com> Cc: pgsql-docs@lists.postgresql.org Subject: Re: Ltree pattern matching EXTERNAL PG Doc comments form <noreply@postgresql.org> writes: > In v12 ltree doc (I've not checked other versions) "The behavior of % > is a bit complicated. It tries to match words rather than the entire > label. For example foo_bar% matches foo_bar_baz but not foo_barbaz. If > combined with *, prefix matching applies to each word separately, for > example foo_bar%* matches foo1_bar2_baz but not foo1_br2_baz. > I believe foo1 is in error (if I understood the operators), it should > be foo. A quick test shows that the examples are correct as stated: contrib_regression=# select 'foo_bar_baz'::ltree ~ 'foo_bar%'::lquery; ?column? ---------- t (1 row) contrib_regression=# select 'foo_barbaz'::ltree ~ 'foo_bar%'::lquery; ?column? ---------- f (1 row) contrib_regression=# select 'foo1_bar2_baz'::ltree ~ 'foo_bar%*'::lquery; ?column? ---------- t (1 row) contrib_regression=# select 'foo1_br2_baz'::ltree ~ 'foo_bar%*'::lquery; ?column? ---------- f (1 row) I'd be the first to admit that this paragraph doesn't seem to measure up to our usual standards of clarity, but I'm not sureabout what would be better wording. regards, tom lane
В списке pgsql-docs по дате отправления: