【问题标题】:MySQL CONCAT in WHERE Statement (Multi Tables)MySQL CONCAT in WHERE 语句(多表)
【发布时间】:2010-12-01 13:54:11
【问题描述】:

我的问题很简单——至少我希望如此。我尝试在 MySQL 中加入两个表,并在连接字段上执行 WHERE 语句以产生结果。这是示例查询:

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name  
FROM users as a  
INNER JOIN company as b on a.company_id = b.company_id  
HAVING whole_name LIKE '%IBM John%'  
LIMIT 25

此查询似乎仍在从名称列中提取,并且不会返回任何结果。我已经尝试过这样做:

SELECT a.name, b.company, concat_ws(' ', a.company, b.name) as whole_name  
FROM users as a  
INNER JOIN company as b on a.company_id = b.company_id  
WHERE concat_ws(' ', a.company, b.name) LIKE '%IBM John%'  
LIMIT 25

它仍然没有产生任何结果。数据绝对在表中。 John 的公司是 IBM Computer Systems。 whole_name 字段将返回 'IBM Computer Systems John Smith',但对 '%IBM John%' 的查询不会返回任何内容。

有什么帮助吗?

谢谢, 格雷格

【问题讨论】:

    标签: mysql sql-like


    【解决方案1】:

    在 IBM 和 John 之间需要一个 %...它在文本中的某处寻找“IBM John”...而不是 IBM,然后 John 在更远的地方...

    【讨论】:

    • 那么对于每个搜索词,您需要将其分解并添加一个'%'符号吗?比如'%IBM% %John%'?
    • % 是一个通配符,您可以执行 '%IBM%John%' 并且它会执行此操作,如果您想强制它们是单独的单词,那么 '%IBM% %John%'寻找 IBM,然后是某个空间,然后是 John。如果“IBMJohn”(即空间不足)在文本中,“%IBM%John%”也会匹配。
    猜你喜欢
    • 2010-12-07
    • 2016-12-29
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    相关资源
    最近更新 更多