~*
当字符串包含非 ASCII 字符(如德语变音符号)时,我试图让 PostgreSQL 8.4.3 与其运算符进行不区分大小写的模式匹配。数据库、终端和其他一切都配置为使用 UTF-8。
简而言之,这是问题:
SELECT 'Ö' ~* 'ö'; -- false
还有其他变体可以工作:
SELECT 'Ö' ILIKE 'ö'; -- true
SELECT 'Ö' ~* '[Öö]'; -- true
SELECT LOWER('Ö') ~* 'ö'; -- true
这些选择都没有让我特别高兴。ILIKE 不使用正则表达式。[Öö] 涉及重写搜索词。LOWER() 可能是最好的解决方法,但我真的很想让~*
操作员按预期工作。
提前致谢。