【问题标题】:Mysql - how to use like on multiple columnsMysql - 如何在多列上使用like
【发布时间】:2016-06-25 05:26:57
【问题描述】:

我在 mysql 中搜索了 java 程序中多列中的一个单词。列数是可变的。 这个查询是正确的:

select * from customer with (city, name) like%'adelaide'%

【问题讨论】:

标签: mysql where-clause sql-like


【解决方案1】:

您可以使用 CONCAT() 函数:

select * from customer WHERE concat(city,name) like '%adelaide%'

您可以根据需要向 concat 函数添加任意数量的列。 同样如您所见,我更改了您的 like 语法 '%WORD%' 并使用了一个简单的 where 子句。

【讨论】:

  • 为了使其正常工作,您必须确保不会出现列中不包含“adelaide”但连接字符串包含的情况。例如。对于 column1 = 'Paradela' 和 column2 = 'idea'。
  • 你是对的,但是可以通过 tweeking 来解决,例如在两列之间连接一个唯一字符@cl0ne
【解决方案2】:

最好使用CONCAT_WS()函数。

CONCAT() 返回NULL,如果任何参数是NULL

CONCAT_WS() 在分隔符参数后跳过任何 NULL 值。

【讨论】:

    【解决方案3】:

    多个like 语句不能与或直接一起使用。您必须为每个like 语句使用列名。

    如下所述使用多个。

    Select * 
    from animals 
    where 
    (
    [animalscolumn] like ('%dog%') or 
    [animalscolumn] like ('%cat%') or 
    [animalscolumn] like ('%gerbil%') or 
    [animalscolumn] like ('%hamster%') or 
    [animalscolumn] like ('%guinea pig%')
    )
    

    【讨论】:

    • 使用 CONCAT 会更好。当搜索查询跨越多列时,使用 OR 将不起作用
    【解决方案4】:
    select * from customer with city like%'adelaide'% or name like%'adelaide'%
    

    【讨论】:

    • 你能解释一下它为什么回答这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2012-10-27
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多