我在表software_hardware
中有一个名为activities
的列,可能有多个产品输入由INVENTORY| POS |
或GPOS | ACCOUNTING |
之类的管道分隔。
我有这个问题:
SELECT a.id, a.ticket_number, a.client, a.software_hardware,
a.issues_concern, a.status, a.technical_programmer, a.date_added
FROM activities a
WHERE a.client = '".$_POST['client']."' AND a.software_hardware LIKE '%".$arr[$i]."%'
ORDER BY date_added DESC
$arr = explode("|", $_POST['Soft_hard']);
当我选择客户端和产品时,相关信息将显示在div上。现在我的问题是,如果我有POS
和GPOS
,我意识到我无法使用LIKE '%[input product name here]%'
,因为这会返回包含POS
和{{1}的结果如果我选择GPOS
。
如果我选择POS
,如何修复此查询以不显示GPOS
?
PS。我知道MySQL的问题。这就是我所使用的公司,所以我现在别无选择。
答案 0 :(得分:3)
您可以使用REGEXP
:
a.software_hardware REGEXP '[[:<:]]" . $arr[$i] . "[[:>:]]'
[[:<:]]
和[[:>:]]
标记代表字边界。因此POS
无法与GPOS
匹配,因为开头没有字边界。
注意如果它有前导空格或尾随空格,则需要trim($arr[$i])
。
答案 1 :(得分:0)
试试这个:
SELECT a.id, a.ticket_number, a.client, a.software_hardware,
a.issues_concern, a.status, a.technical_programmer, a.date_added
FROM activities a
WHERE a.client = '".$_POST['client']."'
AND UPPER(a.software_hardware) LIKE '%".strtoupper($arr[$i])."%'
ORDER BY a.date_added DESC