如何 select 行在任何 selected 列中包含任何 selected 值? MySQL

How do I select rows that contain any of the selected values in any of the selected columns? MySQL

我非常想获取在任何相关列中包含任何相关标签的所有行。

查看示例行:

[LeadID Leadname    Ratings AvgRating   Address Website Phone   TimesOpen   Category    LeadDescription CurrentStatus]
1   Siena Tuscan Steakhouse 396 4.300   104 S Broadway, Wichita, KS 67202, United States    http://www.sienawichita.com/    +1 316-440-5300 LGBTQ+ friendly2022-05-19 Thursday 5PM–12AM
2022-05-20 Friday 6:30–10AM
2022-05-21 Saturday 7–11AM
2022-05-22 Sunday 7–11AM
2022-05-23 Monday 6:30–10AM
2022-05-24 Tuesday 6:30–10AM
2022-05-25 Wednesday 5PM–10AM
    restaurants Hotel restaurant-bar offering refined Italian plates & many wines in a warm & elegant atmosphere.

我认为您不需要以结构化形式查看它,因此对于它的混乱,我深表歉意。 [ ]中的都是列名,后面是各自的字段。

这是我的查询


    SELECT LeadID
    FROM cleancopy
    WHERE
        Website OR LeadName OR LeadDescription OR Category 
        IN ('%Event%' OR '%Live%' OR '%Music%' OR '%Venue%');

此查询返回所有行未过滤

我希望查询 select 所有包含任意数量相关标签“Event”、“Live”、“Music”、“Venue”的行,在任何列名 Website、LeadName 中, LeadDescription, 类别。

因此一个或所有标签可以属于一种或所有属性类型。

更简单地说,我正在尝试过滤掉任何不包含任何我想要的关键字的行。

第一件事:“我认为您不需要以结构化形式查看它”是一个非常糟糕的假设。我们确实需要这个,因为它可以更容易地提供一个好的答案。 第二件事:这不是 SQL 完成的那种数据检查。所以没有简单的方法,特别是当你真的需要一个字符串列表和类似的条件时。这种复杂的数据处理最好避免或在 SQL 之外和应用程序内完成。 无论如何,完成您描述的最短方法是 CONCAT 所有列,然后使用 OR.

搜索您的字符串
SELECT leadid FROM cleancopy WHERE
CONCAT(website,leadname,leaddescription,category) LIKE '%Event%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Live%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Music%'
OR CONCAT(website,leadname,leaddescription,category) LIKE '%Venue%'