Mysql数据库包含以下类型的值:
'AE01-1056 Ricoh Aficio'
或'Ricoh AE01-1087 (AE01-1069)'
等
如果我是普通用户,我将用简单的文本搜索产品名称,如
AE011056 ......但结果未找到。
我试过这个问题:
$q="SELECT * FROM mytable WHERE (p.product_name LIKE '$name%' OR c.category_name LIKE '$name%' OR pm.name LIKE '$name%')";
我在查询中应该对产品进行哪些更改,因为我已经尝试了LIKE运算符&它不适合我。
答案 0 :(得分:2)
使用替换功能
$q="SELECT * FROM mytable
WHERE (REPLACE(p.product_name,'-','') LIKE '%$name%'
OR REPLACE(c.category_name,'-','') LIKE '%$name%'
OR REPLACE(pm.name ,'-','') LIKE '%$name%')";
答案 1 :(得分:0)
我认为只有两种方式:
<强> 1。处理搜索字符串 如果你知道,用户经常搜索代码并且不使用nessesary连字符,检查搜索字符串搜索是否遵循给定格式,如果缺少则插入hypen。
<强> 2。替换where-statement 中的所有连字符 见http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace
根据您的设置,解决方案可能是性能更高的解决方案,因为您只需要做一个而不是多个字符串操作。