我有一个自动填充搜索字段,用户可以使用它来查找不同的价目表。
我想在数据库中比较的字段是: *品牌名称(String) * Modelyear(String) *车辆类型(int)
车辆类型为0,1或2.这是(大篷车,移动房屋,拖车)
因此用户可能会搜索: “Adria 560 2005 Caravan”
我的第一个想法是做一个类似CONCAT的比较。 在哪里CONCAT(品牌,模式,类型)喜欢'%Adria 560 2005 Caravan%'
但问题是车型是一个整数,因此可以将“Caravan”与0,1,2进行比较。
我可以以某种方式将int转换为我比较的字符串吗?
答案 0 :(得分:0)
在搜索之前,使用PHP str_replace()或preg_replace()函数预处理搜索字符串。如果您决定这样做,这将使您能够在将来以简单的方式支持多种语言。 理想情况下,您应该分离WHERE条件,以便数据库系统可以根据需要优化查询:
WHERE type=0 AND CONCAT(brand,modelyear) LIKE '%Adria 560 200[4-6]%'
等
答案 1 :(得分:0)
如果车辆类型的表名是vehicleType,则查询类似于以下内容:
SELECT *
FROM vehicle v
INNER JOIN vehicleType vt on vt.vehicle_type_id = v.vehicle_type
WHERE concat_ws(v.brandName,v.modelYear,vt.vehicle_type) LIKE "%whatever%"