选择行包含字符串

时间:2018-03-27 05:07:25

标签: php mysql

我在表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上。现在我的问题是,如果我有POSGPOS,我意识到我无法使用LIKE '%[input product name here]%',因为这会返回包含POS和{{1}的结果如果我选择GPOS

如果我选择POS,如何修复此查询以不显示GPOS

PS。我知道MySQL的问题。这就是我所使用的公司,所以我现在别无选择。

2 个答案:

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