Я пытаюсь заставить PostgreSQL 8.4.3 выполнить сопоставление шаблона без учета регистра с его оператором ~*
, когда строки содержат не-ASCII символы, такие как немецкие умляуты.База данных, терминал и все остальное настроено на использование UTF-8.
Вот в двух словах проблема:
SELECT 'Ö' ~* 'ö'; -- false
Существуют другие варианты, которые работают:
SELECT 'Ö' ILIKE 'ö'; -- true
SELECT 'Ö' ~* '[Öö]'; -- true
SELECT LOWER('Ö') ~* 'ö'; -- true
Ни одна из этих альтернатив не делает меня особенно счастливым.ILIKE не использует регулярные выражения.[Öö] включает переписывание поискового запроса.LOWER (), вероятно, лучший обходной путь, но мне бы очень хотелось, чтобы оператор ~*
работал так, как он должен.
Заранее спасибо.