POSTGRESQL unaccent不匹配ñ

时间:2018-03-13 16:34:16

标签: postgresql

大家好,我有一个西班牙语医学术语数据库。可以说表description有一个名为term的列。 如果我使用以下查询:

SELECT *
FROM description
WHERE unaccent(description.term) ILIKE '%sueño%';

结果集为空但我知道该表的条款为ñ。例如,查询:

SELECT *
FROM description
WHERE description.term ILIKE '%sueño%';

会返回多个结果。

我需要使用unaccentextensión来匹配áa。 目前我正在使用这项工作,但我认为它效率不高:

SELECT *
FROM description
WHERE unaccent(description.term) ILIKE '%${CRITERIA}%' OR description.term ILIKE '%${CRITERIA}%';

任何人都可以帮助我理解为什么会这样吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

这不起作用:

SELECT *
FROM description
WHERE unaccent(description.term) ILIKE '%sueño%';

由于unaccent(description.term) 没有ñ 。您正在使用ILIKEñ进行比较。如果“标准”将具有重音,那么您应该在两侧使用非标准。

这有效:

SELECT *
FROM description
WHERE unaccent(description.term) ILIKE unaccent('%sueño%');