【问题标题】:Using strings from one column to search inside a string in another SQL使用一列中的字符串在另一个 SQL 中的字符串内进行搜索
【发布时间】:2013-04-17 09:17:47
【问题描述】:

我正在尝试使用 SQL 中另一列中的字符串在句子中进行搜索。我有一个大的关键词列表和他们从 1 到 6 的评分。我正在尝试搜索从 Twitter 上拉下来的数据,看看人们对某些电影的看法(即 Wreck It Ralph),并给这部电影一个总分.我遇到的问题是从 Twitter 中提取的数据没有分解,但仍然是一个完整的句子。我想不出一种在句子中搜索关键字的方法。这是一个有效的查询:

SELECT SUM(K.Score) 
FROM wreck_it_ralph WIR, Keyword K
WHERE t_text LIKE '%fantastic%'
       AND K.word = 'fantastic';

这是我尝试使用连接的查询,但不成功:

SELECT SUM(K.Score) 
FROM Wreck_it_Ralph WIR, Keyword k
WHERE t_text LIKE ('%' + k.word + '%');

【问题讨论】:

  • 从 Wreck_it_Ralph WIR 中选择 SUM(K.Score),关键字 k WHERE t_text LIKE '%' + k.word + '%';
  • 串联查询似乎可以工作。您使用的是什么数据库服务器?
  • 这是校园里的一个。甲骨文,我相信
  • 在我的评论中尝试查询
  • 我修复了查询,所以它是 WHERE WIR.t_text LIKE ('%' + k.word + '%') 但现在我得到一个错误,上面写着“无效号码”

标签: sql string oracle search concatenation


【解决方案1】:

MSSQL-:

SELECT SUM(K.Score) 
FROM Wreck_it_Ralph WIR, Keyword k
WHERE t_text LIKE '%' + k.word + '%';

【讨论】:

    【解决方案2】:

    不同的数据库有不同的连接字符串的方法。在 Oracle 或 Postgres 中,试试这个:

    SELECT SUM(K.Score) 
    FROM Wreck_it_Ralph WIR, Keyword k
    WHERE t_text LIKE '%' || k.word || '%'
    

    在 SQL Server 或 Sybase 中:

    SELECT SUM(K.Score) 
    FROM Wreck_it_Ralph WIR, Keyword k
    WHERE t_text LIKE '%' + k.word + '%'
    

    在 MySQL 中:

    SELECT SUM(K.Score) 
    FROM Wreck_it_Ralph WIR, Keyword k
    WHERE t_text LIKE concat('%', k.word, '%')
    

    请注意,部分单词匹配存在问题。所以,“不喜欢”的东西会匹配“喜欢”。您可能需要查看所使用的任何数据库的全文功能,因为这会考虑到标点​​符号、完整单词和停用词表。

    【讨论】:

    • 这个查询有效:SELECT SUM(K.Score) FROM Wreck_it_Ralph WIR, Keyword k WHERE t_text LIKE '%' || k.word || '%'
    • 谢谢!我不明白这些是什么||符号正在做虽然
    • @user2313460 。 . .这恰好是字符串连接的 Oracle 语法。
    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2020-07-07
    • 2013-01-18
    • 2020-08-30
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多