【问题标题】:Sql string searchSql字符串搜索
【发布时间】:2015-06-16 18:27:59
【问题描述】:

这是我的问题:

找到首都和名称,其中首都包含国家名称。

这是我的回答:

SELECT name,capital
FROM world WHERE 
capital=concat(name,"NULL")

我不明白我应该在“WHERE”部分做什么。

我应该 capital=concat(name,something?) 还是 INLIKE?

你能帮帮我吗?谢谢。

问题来自此链接: http://sqlzoo.net/wiki/SELECT_names 问题 13

【问题讨论】:

  • 这主要取决于您需要如何订购结果。如果要按相关性排序,则需要全文搜索,否则,LIKE 将完成这项工作

标签: sql string search select


【解决方案1】:

不确定你想用NULL 做什么,但基本上如果你想找到一个包含国家名称的首都,like 运算符的使用肯定是有序的。只需在它周围加上几个通配符 (%),就可以开始了:

SELECT name, capital
FROM   world
WHERE  capital LIKE CONCAT('%', name, '%')

【讨论】:

    【解决方案2】:

    CONCAT这里不需要,你应该可以使用:

      WHERE [capital] LIKE '%[name]%'
    

    【讨论】:

      【解决方案3】:

      类似:

      SELECT name,capital
      FROM world
      WHERE capital like '%' + name + '%'
      

      【讨论】:

        【解决方案4】:

        首先,最好将 SELECT、FROM 和 WHERE 放在不同的行上。像这样:

        SELECT ....
        
        FROM ...
        
        WHERE ...
        

        这样容易思考。

        接下来,我们考虑我们将使用的部分。我们需要一个 LIKE ,我们需要一些与 capitalname 相关的东西,还有 - 一种使用带有额外字符的名称的方法 - 那是 concat 函数:

        SELECT name,capital
        FROM world 
        WHERE  capital like concat('%', name ,'%') 
        

        【讨论】:

          【解决方案5】:

          我试过了 Select name, capital From world where capital like concat ('%', name, '%')

          【讨论】:

          • 不完全是。例如,当首都是墨西哥城并且名称是墨西哥时,它不起作用。
          • @user3027665 好的,我以为你在说问题 11。在这种情况下,请尝试 Select name, capital From world where capital like concat ('%', name, '%')
          【解决方案6】:

          这是正确答案:

          SELECT name,capital
          FROM world
          WHERE capital 
          LIKE concat(concat('%',name),'%')
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-07-13
            • 1970-01-01
            • 2013-06-16
            • 1970-01-01
            • 1970-01-01
            • 2019-09-08
            • 2013-02-01
            相关资源
            最近更新 更多