使用一列中的字符串在另一个SQL中的字符串内搜索

时间:2013-04-24 00:43:42

标签: sql string oracle search concatenation

我正在尝试使用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 + '%');

2 个答案:

答案 0 :(得分:1)

不同的数据库有不同的串联方式。在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, '%')

请注意,您遇到部分字匹配问题。所以,“不喜欢”的东西会匹配“喜欢”。您可能希望查看正在使用的数据库的全文功能,因为这会考虑标点符号,完整单词和停止列表。

答案 1 :(得分:0)

MSSQL - :

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