Redshift中的多字节字符问题

时间:2015-05-12 08:46:41

标签: postgresql amazon-redshift vertica

我无法在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()函数可以正常工作。

1 个答案:

答案 0 :(得分:1)

LIKEILIKE运算符在内部使用PostgreSQL的正则表达式支持。

在PostgreSQL 9.2中添加了对正则表达式中正确处理utf-8多字节字符的支持。 Redshift基于PostgreSQL 8.2(?),看起来他们还没有向支持他们的分叉版本提供支持。

请参阅Postgresql regex to match uppercase, Unicode-aware

您可以使用LIKE lower('Г. Красноярск')来解决此问题,但有限制。表达式索引可能很有用。