Does string a begin with string b?

Started by Robert Jamesover 12 years ago2 messagesgeneral
Jump to latest
#1Robert James
srobertjames@gmail.com

What's the best way to check if string a begins with string b?

Both a and b are coming from fields in a table.

Requirements:

* Either a or b might have special chars (such as '%') in them which
should NOT do anything special - they're just plain strings, not
regular expressions.
* a and b can be of arbitrary length (no fixed limits)
* Ideally, I'd like it to be transparent to the query engine, so that
it can use indexes. If both a and b are indexed, it's possible in
theory to use the index to do most of the work - but I can't come up
with a query that makes use of it.

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#2Jeff Janes
jeff.janes@gmail.com
In reply to: Robert James (#1)
Re: Does string a begin with string b?

On Fri, Aug 16, 2013 at 11:04 AM, Robert James <srobertjames@gmail.com> wrote:

What's the best way to check if string a begins with string b?

Both a and b are coming from fields in a table.

Requirements:

* Either a or b might have special chars (such as '%') in them which
should NOT do anything special - they're just plain strings, not
regular expressions.
* a and b can be of arbitrary length (no fixed limits)

where substring(a,1,length(b)) = b

* Ideally, I'd like it to be transparent to the query engine, so that
it can use indexes. If both a and b are indexed, it's possible in
theory to use the index to do most of the work - but I can't come up
with a query that makes use of it.

I wouldn't count on this being much help. It might be able to use an
index-only-scan if both a and b are in the index, but then you would
just be treating the index as a skinny table, not as an index.

Cheers,

Jeff

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general