You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Eloquent执行where查询时如何移除字段值中的点号?

问题解答

可以实现,你可以借助Eloquent的whereRaw()方法调用数据库内置的字符串替换函数,先移除price字段值中的所有点号,再转换为数值类型进行条件匹配。

不同数据库的写法示例如下:

  • MySQL/MariaDB 场景
    使用REPLACE函数替换点号后转无符号整数匹配:
    Products::whereRaw("CAST(REPLACE(price, '.', '') AS UNSIGNED) > ?", [30000])->get();
    
  • PostgreSQL 场景
    使用REPLACE结合整数类型转换:
    Products::whereRaw("CAST(REPLACE(price, '.', '') AS INTEGER) > ?", [30000])->get();
    

注意:以上写法默认你字段里的点号都只是千分位分隔符,不存在用作小数点的情况,否则替换后会出现数值错误。另外不推荐长期用这种方案,把数值类字段存储为带格式的字符串会导致查询无法走索引,性能很差,建议调整表结构把price改为整数/十进制数值类型存储,前端展示的时候再格式化千分位即可。

内容的提问来源于stack exchange,提问作者SaschaK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 01:39:02