使用非大写字母的 Laravel/PostgreSQL 查询
Posted
技术标签:
【中文标题】使用非大写字母的 Laravel/PostgreSQL 查询【英文标题】:Laravel/PostgreSQL query with non-capitalised letters 【发布时间】:2021-10-26 04:40:54 【问题描述】:我正在做一个 Laravel CRUD 练习,并且我已经在控制器中设置了搜索路由:
public function search($name)
return Product::where('name', 'like', '%'.$name.'%')->get();
在后端 psql 数据库中,我有一个与 iPhone 11
完全相同的项目名称。
当我对邮递员进行查询时,如果我通过localhost:8000/api/products/search/iPh
GET
运行良好。但是,如果我将其取消大写为...search/iph
,它将返回一个空数组。
所以我的问题是,我该怎么做才能在存储的数据包含大写字母时使用非大写字母进行搜索?
【问题讨论】:
【参考方案1】:对于 mysql,您可以使用原始查询
Product::whereRaw("UPPER(name) LIKE '%'". strtoupper($name)."'%'")->get();
对于 pgSQL,您可以使用 ILIKE
区分大小写,使用 LIKE
区分大小写
Product::where('name', 'ILIKE', '%'.$name.'%')->get();
【讨论】:
好提示!对于这种查询 mysql 和 pgsql 的备忘单,你有什么建议吗? 你可以查看 Laravel 文档。没有这样的备忘单。只有少数查询可能不兼容。你会很容易找到他们的解决方案。以上是关于使用非大写字母的 Laravel/PostgreSQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
Python Vigenere 工作,但我无法使用函数来解释空格和非字母字符