Thread: German "umlaut insensitive" query

German "umlaut insensitive" query

From
Robert Strötgen
Date:
I want to query words with German "umlauts" (special characters) with
and without normalization. I want to find "grün" (green) written
"gruen" as well.

Using "LIKE" with locale de_DE.iso88591 or .utf-8 does not help (Locale 
support should affect "LIKE",
http://www.postgresql.org/docs/7.3/static/charset.html#AEN21761).

Any Idea how to solve this? Define a special Operator? Has anyone
already done this before?

I am using PostgreSQL 7.3.2 on Linux.

TIA,
Robert Strötgen. :)

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  Robert Strötgen  mailto:robert@stroetgen.de
      http://www.stroetgen.de/
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Re: German "umlaut insensitive" query

From
Michael Kleiser
Date:
One solution:

select replace( replace( replace( replace( 'Test ä ö ü ß', 'ä','ae'), 'ö','oe' ), 'ü','ue'), 'ß','ss' );
     replace
------------------ Test ae oe ue ss

If you also have upcase-characters, you have to extend the statement.


Robert Strötgen schrieb:
> I want to query words with German "umlauts" (special characters) with
> and without normalization. I want to find "grün" (green) written
> "gruen" as well.
> 
> Using "LIKE" with locale de_DE.iso88591 or .utf-8 does not help (Locale 
> support should affect "LIKE",
> http://www.postgresql.org/docs/7.3/static/charset.html#AEN21761).
> 
> Any Idea how to solve this? Define a special Operator? Has anyone
> already done this before?
> 
> I am using PostgreSQL 7.3.2 on Linux.
> 
> TIA,
> Robert Strötgen. :)
> 


Re: German "umlaut insensitive" query

From
Robert Strötgen
Date:
> select replace( replace( replace( replace( 'Test ä ö ü ß', 'ä','ae'), 
> 'ö','oe' ), 'ü','ue'), 'ß','ss' );

Thanks a lot. A wrote this into a user defined function with lower() 
around the source string, and it works. :-)

CREATE OR REPLACE FUNCTION public.unumlaut(varchar)  RETURNS varchar AS
'select replace( replace( replace( replace( lower($1), \'ä\',\'ae\'), 
\'ö\',\'oe\' ), \'ü\',\'ue\'), \'ß\',\'ss\' );'  LANGUAGE 'sql' IMMUTABLE STRICT;

Best regards,
Robert. :)

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  Robert Strötgen  mailto:robert@stroetgen.de
      http://www.stroetgen.de/
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~