gpt4 book ai didi

ruby-on-rails - ActiveRecord 中不区分大小写的匹配与 LOWER() 未找到任何匹配项

转载 作者:行者123 更新时间:2023-11-29 13:09:20 24 4
gpt4 key购买 nike

我正在尝试使用 activerecord 执行不区分大小写的搜索。但它不起作用。

这是针对 macos postgres 服务器 11.11 rails 5.2.1

查询:

Post.joins(:terms, :subcategory, :category).where("LOWER(terms.title) LIKE LOWER('Апелласьон')")

结果:发现两个帖子

查询:

Post.joins(:terms, :subcategory, :category).where("LOWER(terms.title) LIKE LOWER('апелласьон')")

结果:零发现帖子

最佳答案

在 Postgres 中这样做给出了原因。这是一个编码问题,您使用的是西里尔字母 A,而 Rails/Postgres 可能试图将它与基本拉丁字母 A 进行比较,从而给您带来意想不到的结果。

SELECT 
ASCII(LOWER('Апелласьон')), -- 1072
ASCII(LOWER('апелласьон')), -- 1072
ASCII(LOWER('a')), -- 97
ASCII(LOWER('A')) -- 97

这里是每个字符的ASCII码

https://www.codetable.net/decimal/1072

https://www.codetable.net/decimal/97


对 Postgres 中的字符代码有更多了解的人将不得不给出更有意义的解释。

关于ruby-on-rails - ActiveRecord 中不区分大小写的匹配与 LOWER() 未找到任何匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56940300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com