On Wed, 16 Aug 2006, Mike Taylor wrote:
>Jakob Voss writes:
> > /starts-with   (equal to ="...*")
> > /ends-with     (equal to ="*...")
> > /contains      (equal to ="*...*")
> > are probably more common use-cases than /substring and they are
> > easier to remember and to implement than juggling asterisks.

>Surely now we've seen the light and realised that existing truncation
>mechanisms give us what we want, the very last thing we want to do is

To go right the way back to the beginning, the original requirement was
to be able to say that you want to search for specific locations within
a string, for example marc.008 =/substring=1:6 061223

As substring isn't marc specific, (eg both SQL and XPath have a
substring function), it was decided it should go into the cql context
set.  At which point several different extensions (such as negative
numbers for counting backwards) were introduced to make it more

This isn't covered by existing masking characters, so we do need at
least start:length, where both start and length are positive integers.