在mysql

时间:2017-01-16 07:32:51

标签: php mysql

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运算符&它不适合我。

2 个答案:

答案 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

根据您的设置,解决方案可能是性能更高的解决方案,因为您只需要做一个而不是多个字符串操作。