Jonathon Coombes wrote:

On Wed, 2005-09-07 at 18:41 -0400, Andrew Jensen wrote:
I know that some databases has the two keywords LIKE and ILIKE,
one for case-sensitive and the other for case-insensitive matching.
Does this work at all?

Regards
Jonathon
OK..taking another look at this-

HSQLDB doesn't seem to recognize ILIKE...but, read on..

First Table WORDS with a column WORD of VARCHAR and the following entries
dog
Dóg
DoG
DOg

Run the select statement I put up earlier
SELECT "WORD" FROM "WORDS" "WORDS" where ucase("WORD") like ucase('dog')
and the result result set =
DOG
dog
DoG
DOg

We do not get Dóg

However, HSQLDB has a special datatype of VARCHAR_IGNORECASE and I have to admit this is the
first time I have tried using it.

So I created this table
Table IWORDS with a column word of VARCHAR_IGNORECASE and the following entries
dOG
DOG
Dog
doG
DÒG

Use this select statement
SELECT "word" FROM "IWORDS" "IWORDS" where "word" like 'Dog'
and the result set =
dOG
DOG
Dog
doG

Just what we would expect. However change the select to this ( why? , lets just call it a hunch)
SELECT "word" FROM "IWORDS" "IWORDS" where "word" like 'D*g'
and the result set =
dOG
DOG
Dog
doG
DÒG

hmmm...might be something here

So I went back to the original table and did the same change
SELECT "WORD" FROM "WORDS" "WORDS" where ucase("WORD") like ucase('d*g')
and the result set =
NULL

OK..now it is getting interesting

getting back to our case insensitive table and changing the select to
SELECT "word" FROM "IWORDS" "IWORDS" where "word" like 'D*'
yeilds a result set of
dOG
DOG
Dog
doG
DÒG

Here I decided maybe I should look at the HSQLDB docs again...(novel idea, hey) and this is what it says about like

"The LIKE keyword uses '%' to match any (including 0) number of characters, and '_' to match exactly one character. To search for '%' or '_' itself an escape character must also be specified using the ESCAPE clause. For example, if the backslash is the escaping character, '\%' and '\_' can be used to find the '%' and '_' characters themselves. For example, SELECT .... LIKE '\_%' ESCAPE '\' will find the strings beginning with an underscore."

great it doesn't even mention the * character... :-D .

ok..I added the following words to the table
dig
dance
DÃNCE
digger
dagger
dăgger
do

going back and changing the select statement to
SELECT "word" FROM "IWORDS" "IWORDS" where "word" like 'D_g_%r'
result set =
digger
dagger
dăgger

while (note that this is 2 _ characters )
SELECT "word" FROM "IWORDS" "IWORDS" where "word" like 'D__*'
and now we get
dOG
DOG
Dog
doG
DÒG
dig
dance
DÃNCE
digger
dagger
dăgger

Everything except do...

One final check, going back to our case sensitive table WORDS
SELECT "WORD" FROM "WORDS" "WORDS" where ucase("WORD") like ucase('d%g')

Guess what...we got what we wanted in the first place..life is a circle they say
DOG
dog
DoG
DOg
DÒG

Anyway this is enough of this ...

HTH somehow

Drew Jensen



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to