搜索有口音的名字
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:]]'
同样,这不仅仅包括重音符号,但根据您的用例,它可能会满足需要。
我正在尝试找到一种方法来只列出有重音的名字。
我正在使用取自这个问题的以下示例 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:]]'
同样,这不仅仅包括重音符号,但根据您的用例,它可能会满足需要。