On Mon, Mar 27, 2006 at 11:31:17AM +0200, SunWuKung wrote: > I would need to do case insensitive match against a field that contains > text in different languages - Greek, Hungarian, Arabic etc. > The db encoding is UTF8. > > So far I found no way to achieve that. I tried converting both strings > to the same case and using ~* , but neither worked. Oh, tricky. Firstly, case-insensetive means different things to different locales. For example, in Turkish 'i' is not the lowecase version of 'I'. Maybe you've chosen a locale that doesn't do UTF-8? You don't specify a platform either. Locale support varies wildly by platform. What you probably want it some kind of accent-insensetive match that mean that é, è, ë, e, É, È, E and Ë are all considered to match eachother. The way you do that is by converting unicode to a particular normal form and then comparing. Unfortunatly, I don't think PostgreSQL supplies such a function right now. However, some server-side procedural languages can do this. If you can find one (possibly Perl) that can do the conversion, you can create a function to do the mapping. Have a nice day, -- Martijn van Oosterhout <kleptog@xxxxxxxxx> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
Attachment:
signature.asc
Description: Digital signature