在 SQL 中组合“LIKE”多个列和值

问题描述 投票:0回答:1

我有一个包含制造商和产品名称的表,我想要一个查询来查找给定制造商和产品名称的产品 ID 来搜索

SELECT product_id
  FROM
    `product`
  WHERE
    product_id <> ''
    and lower(manufacturer) like '%ACME%'
    and lower(product_name) like '%Anvil%'

我想知道是否可以在一个查询中以某种方式查询多个特定制造商和产品名称。例如,我想查找“ACME Anvil”和“DemoCO Dynamite”的产品 ID。

我可以做到这一点的最简单方法是类似

SELECT product_id
  FROM
    `product`
  WHERE
    product_id <> ''
    and lower(manufacturer) like '%ACME%'
    and lower(product_name) like '%Anvil%'

UNION ALL

SELECT product_id
  FROM
    `product`
  WHERE
    product_id <> ''
    and lower(manufacturer) like '%DemoCO%'
    and lower(product_name) like '%Dynamite%'

但我想知道是否有更优雅的解决方案,特别是当我可以查找 20 多个产品/公司组合时。请记住,每个组合都是独立的,因此我不想从查询中获得“ACME Dynamite”的结果

sql
1个回答
0
投票

SQL Like 运算符可以与 OR 运算符一起使用。

SELECT product_id 
FROM `product` 
WHERE
     product_id <> ''
     and lower(manufacturer) like '%ACME%' OR lower(manufacturer) LIKE '%DemoCO%';
     and lower(product_name) like '%Anvil%' OR lower(product_name) LIKE '%Dynamite%';
© www.soinside.com 2019 - 2024. All rights reserved.