Now that I read more closely the alternation is actually concatenation. My point still stands but your issue is that
youhave not created a functional index on the decryption result of the encrypted phone number. PostgreSQL does not
knowthat the decrypted phone number is equivalent to the unencrypted field. It only can look at expressions to
determinewhether an index is usable - not values. A table can have more than one index.
David J.
On Aug 11, 2011, at 19:58, David Johnston <polobo@yahoo.com> wrote:
>
>>
>> Not testing here but... and ignore whitespace
>>
>> '^( [ \[\( ]? \s* \d{3} \s* [ -\s\]\) ] \d{3} [ -\s ] \d{4} )$'
>>
> Some tweaks needed but seriously consider dropping RegEx and going the functional index route.
>
>> '^( [ \[\( ]? \s* \d{3} \s* [ -\s\]\) ] \s* \d{3} \s* [ -\s ] \s* \d{4} )$'
>
> Added some extra white-space checking but again not tested.
>
> You can probably find better/more flexible expressions online.
>
> David J.