Thread: case insensitive search with greek characters
Hi all, I 'm testing postgres 8.0 beta 1 an i have the following problem. I have a field with value Γιάννης. If i execute the following query it does not returns any rows. select * from test where descr ilike '%γιαννης%' if i change the query to select * from test where descr ilike '%γιάννης%' everything is fine. As you can see the problem is at char α . I 'm using ENCODING = 'ISO_8859_7'. I also tried with unicode but no luck. An suggestions? Thanks, Gvre
Giannis Vrentzos <gvre@NOSPAM.gvre.gr> writes: > ... everything is fine. As you can see the problem is at char � . > I 'm using ENCODING = 'ISO_8859_7'. I also tried with unicode but no luck. upper/lower casing behavior depends on locale, not encoding (though you also need to be sure your encoding is what the selected locale expects). I suspect you initdb'd with the wrong locale environment settings. Check by doing show lc_ctype; show lc_collate; If it's not the right thing then you'll need to re-initdb :-( regards, tom lane
Giannis Vrentzos wrote: > I 'm testing postgres 8.0 beta 1 an i have the following problem. I > have a field with value Γιάννης. If i execute the following query it > does not returns any rows. > > select * from test where descr ilike '%γιαννης%' > > if i change the query to > > select * from test where descr ilike '%γιάννης%' > > everything is fine. As you can see the problem is at char α . As far as I can see, this is correct, because the pattern in the second query indeed does match you value whereas the first doesn't. Did you expect ilike to be accent-insensitive? It is not. -- Peter Eisentraut http://developer.postgresql.org/~petere/
Tom Lane wrote: > Giannis Vrentzos <gvre@NOSPAM.gvre.gr> writes: > >>... everything is fine. As you can see the problem is at char α . >>I 'm using ENCODING = 'ISO_8859_7'. I also tried with unicode but no luck. > > > upper/lower casing behavior depends on locale, not encoding (though you > also need to be sure your encoding is what the selected locale expects). > I suspect you initdb'd with the wrong locale environment settings. > Check by doing > show lc_ctype; > show lc_collate; > If it's not the right thing then you'll need to re-initdb :-( The problem is not with upper-lower case but with one letter (α) and (ά). I executed show lc_ctype and show lc_collate and postgres returned 'Greek_Greece.1253' and i cannot find an encode like this in postgres. I also don't want to change the encoding every time i change the db server machine. Thanks for responding, Gvre