我有一些麻烦与过滤我的网站上的数据库信息。我有两个表,一个是设备数据库equipment_database,另一个是链接到特定设备qr_links的二维码。因此,我使用一个搜索函数通过一个LIKE运算符来过滤数据。在所有条目都被选中的情况下,我将使用%%,而当搜索特定部分时,我将使用%search_pattern%。问题是,并不是所有的设备都有匹配的二维码。因此,在使用LIKE运算符时,它不返回具有空值的行,而只返回具有链接的二维码的条目。搜索二维码是可选的,需要返回所有包含或不包含二维码的条目。以下是MySQL查询的示例:
SELECT equipment_database.equipment_id, equipment_database.equipment_type, equipment_database.equipment_name, qr_links.qr_linked_with_id, qr_links.qr_link_code
FROM equipment_database
LEFT JOIN qr_links
ON equipment_database.equipment_id=qr_links.qr_linked_with_id
WHERE equipment_database.equipment_institute_id=?
AND equipment_database.equipment_institute_branch_id=?
AND equipment_database.equipment_status=?
AND CONCAT (equipment_database.equipment_name, equipment_database.equipment_type, qr_links.qr_link_code)
LIKE ?
ORDER BY equipment_database.equipment_name
LIMIT ?, ?;有没有办法在使用LIKE运算符时包含来自qr_links的空值(这样%%就会返回所有值加上那些带有空值的值)。谢谢!
发布于 2020-06-21 22:31:57
尝试更改您的查询,如下所示。使用MySQL IFNULL(column,"value to return if null")函数,我们可以返回一个空字符串而不是NULL。
SELECT equipment_database.equipment_id, equipment_database.equipment_type, equipment_database.equipment_name, qr_links.qr_linked_with_id, qr_links.qr_link_code
FROM equipment_database
LEFT JOIN qr_links
ON equipment_database.equipment_id=qr_links.qr_linked_with_id
WHERE equipment_database.equipment_institute_id=?
AND equipment_database.equipment_institute_branch_id=?
AND equipment_database.equipment_status=?
AND CONCAT (equipment_database.equipment_name, equipment_database.equipment_type, IFNULL(qr_links.qr_link_code, ""))
LIKE ?
ORDER BY equipment_database.equipment_name
LIMIT ?, ?;https://stackoverflow.com/questions/62499785
复制相似问题