搜索有口音的名字

search for names which have an accent

我正在尝试找到一种方法来只列出有重音的名字。

我正在使用取自这个问题的以下示例 https://dba.stackexchange.com/questions/94887/what-is-the-impact-of-lc-ctype-on-a-postgresql-database

select firstname from (values ('bernard'), ('bérénice'), ('béatrice'), ('boris')) 
 AS l(firstname)
order by firstname collate "C";

当前输出为

firstname
-------
bernard
boris
béatrice
bérénice

预期输出为

firstname
-------
béatrice
bérénice

知道我应该在 where 语句中输入什么吗?

您必须先创建一个扩展:

CREATE EXTENSION unaccent;

然后你可以用这个查询来检查:

SELECT l.firstname 
FROM (VALUES ('bernard'), ('bérénice'), ('béatrice'), ('boris')) AS l(firstname)
WHERE l.firstname <> unaccent(l.firstname);

这可能会产生比您要求的更多的结果,但如果您想查找包含 Unicode 字符的所有记录,您可以使用 "not ASCII":

的正则表达式
select firstname
from (values ('bernard'), ('bérénice'), ('béatrice'), ('boris')) 
 AS l(firstname)
where
  firstname ~ '[^[:ascii:]]'

同样,这不仅仅包括重音符号,但根据您的用例,它可能会满足需要。