我无法在Redshift中转换多字节字符。
create table temp2 (city varchar);
insert into temp2 values('г. красноярск'); // lower value
insert into temp2 values('Г. Красноярск'); //upper value
select * from temp2 where city ilike 'Г. Красноярск'
city
-------------
Г. Красноярск
我尝试过如下,UTF-8
字符转换为较低的字符。
select lower('Г. Красноярск')
lower
-------------
г. красноярск
在vertica中,使用lowerb()
函数可以正常工作。
答案 0 :(得分:1)
LIKE
和ILIKE
运算符在内部使用PostgreSQL的正则表达式支持。
在PostgreSQL 9.2中添加了对正则表达式中正确处理utf-8多字节字符的支持。 Redshift基于PostgreSQL 8.2(?),看起来他们还没有向支持他们的分叉版本提供支持。
请参阅Postgresql regex to match uppercase, Unicode-aware
您可以使用LIKE lower('Г. Красноярск')
来解决此问题,但有限制。表达式索引可能很有用。