我正在尝试找到一种仅列出具有重音符号的名称的方法。
我正在使用下面的示例,取自该问题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
任何ida,我应该在where语句中放什么?
答案 0 :(得分:2)
您必须先创建一个扩展名:
CREATE EXTENSION unaccent;
然后您可以使用以下查询进行检查:
SELECT l.firstname
FROM (VALUES ('bernard'), ('bérénice'), ('béatrice'), ('boris')) AS l(firstname)
WHERE l.firstname <> unaccent(l.firstname);
答案 1 :(得分:2)
这可能会产生超出您要求的值,但是如果您要查找所有包含Unicode字符的记录,则可以对“ not ASCII”使用正则表达式:
select firstname
from (values ('bernard'), ('bérénice'), ('béatrice'), ('boris'))
AS l(firstname)
where
firstname ~ '[^[:ascii:]]'
同样,这不仅包括重音符号,而且取决于您的用例,它可能满足需要。