首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql ()

Postgresql ()
EN

Stack Overflow用户
提问于 2022-02-15 21:34:11
回答 1查看 143关注 0票数 0

以下查询:

代码语言:javascript
复制
select lower('ALGODÓN'), upper('algodón')

在以下方面的成果:

代码语言:javascript
复制
  lower  |  upper
---------+---------
 algodÓn | ALGODóN
(1 row)

另一方面,Python得到了正确的结果:

代码语言:javascript
复制
>>> 'ALGODÓN'.lower()
'algodón'

是否有办法让postgres正确地转换非ascii字符的大小写?

EN

回答 1

Stack Overflow用户

发布于 2022-02-15 21:42:18

你用错了校对。例如,使用C排序规则:

代码语言:javascript
复制
SELECT lower('ALGODÓN' COLLATE "C"), upper('algodón' COLLATE "C");

  lower  │  upper  
═════════╪═════════
 algodÓn │ ALGODóN
(1 row)

但是对于en_US.utf8 (Linux):

代码语言:javascript
复制
SELECT lower('ALGODÓN' COLLATE "en_US.utf8"), upper('algodón' COLLATE "en_US.utf8");

  lower  │  upper  
═════════╪═════════
 algodón │ ALGODÓN
(1 row)

语言不可知论的ICU校对也是正确的:

代码语言:javascript
复制
SELECT lower('ALGODÓN' COLLATE "und-x-icu"), upper('algodón' COLLATE "und-x-icu");

  lower  │  upper  
═════════╪═════════
 algodón │ ALGODÓN
(1 row)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71133679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档