猿问

PostgreSQL是否支持“重音不敏感”排序规则?

PostgreSQL是否支持“重音不敏感”排序规则?

在MicrosoftSQLServer中,可以指定“重音不敏感”排序规则(用于数据库、表或列),这意味着可以进行类似于

SELECT * FROM users WHERE name LIKE 'João'

若要找到带有Joao名字,姓名。

我知道,可以在PostgreSQL中使用非重音串函数,但我想知道PostgreSQL是否支持这些“重音不敏感”的排序规则,因此SELECT上面会有用的。


慕田峪9158850
浏览 667回答 3
3回答

慕桂英546537

我确信PostgreSQL依赖底层操作系统进行整理。它是吗?支撑创建新的排序规则,和自定义排序规则..不过,我不知道你会做多少工作。(可能很多。)

回首忆惘然

不,PostgreSQL不支持这种排序规则。PostgreSQL不支持这样的排序规则(重音不敏感与否),因为除非事物是二进制相等的,否则任何比较都不能返回相等。这是因为在内部,它会给诸如散列索引之类的事情带来许多复杂性。因此,最严格意义上的校对只影响排序而不是平等。解决办法非重音词的全文搜索词典。对于FTS,可以使用unaccent,CREATE EXTENSION unaccent;CREATE TEXT SEARCH CONFIGURATION mydict ( COPY = simple ); ALTER TEXT SEARCH CONFIGURATION mydict  ALTER MAPPING FOR hword, hword_part, word  WITH unaccent, simple;然后你可以用一个函数索引来索引,-- Just some sample data...CREATE TABLE myTable ( myCol )   AS VALUES ('fóó bar baz'),('qux quz');-- No index required, but feel free to create oneCREATE INDEX ON myTable     USING GIST (to_tsvector('mydict', myCol));现在您可以非常简单地查询它。SELECT *FROM myTableWHERE to_tsvector('mydict', myCol) @@ 'foo & bar'     mycol     -------------  fóó bar baz(1 row)另见在字段上创建不区分大小写和重音/对话的不敏感搜索自己不带口音。这个unaccent模块也可以在不进行FTS集成的情况下自行使用,以进行检查。欧文的回答
随时随地看视频慕课网APP
我要回答