我的表中有数据,数据库Postgresql,大小写,大写,ex。 '苹果'。 我有一个搜索输入文本字段。如何在我的数据库中将数据转换为小写,以便在我在文本字段中键入“apple”时返回“Apple”。
$select->where->like(Fruit::fruit_name, "%" . strtoupper($fruitName) . "%");
答案 0 :(得分:0)
您应该使用expression
来执行此操作,或者只使用where
而不喜欢。
If you provide a string, this string will be used to create a Zend\Db\Sql\Predicate\Expression instance, and its contents will be applied as-is, with no quoting:
您是否尝试过以下操作:
$select->where(sprintf('%s iLIKE %%%s%%', Fruit::fruit_name, strtoupper($fruitName));
答案 1 :(得分:0)
找到了解决方法:
use Zend\Db\Sql\Expression;
$upperExpr = new Expression('LOWER(?)', [Fruit::fruit_name], [Expression::TYPE_IDENTIFIER]);
$select->where->like($upperExpr, "%" . mb_strtolower($fruitName, 'UTF-8') . "%");
或者如果没有'äÄööüüÜ',则只有 strtolower();)
这将创建正确的SQL语句。