2013-04-24 35 views
1

我正在嘗試使用SQL中另一列中的字符串搜索一個句子。我有一個關鍵字和他們的評分從1到6的大型列表。我試圖通過從Twitter中拉下來的數據進行搜索,看看人們對某些電影(即Wreck It Ralph)的看法,並給予電影一個總分。我遇到的問題是,從Twitter中提取的數據沒有被分解,但仍處於完整的句子中。我無法找出一種方法來搜索關鍵字的句子。這是一個可行的查詢:從一列中使用字符串在另一個SQL中的字符串內搜索

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 + '%'); 
+0

SELECT SUM(K.Score) FROM Wreck_it_Ralph WIR,關鍵詞K WHERE t_text LIKE '%' + k.word + '%'; – realnumber3012 2013-04-24 00:46:24

+0

串聯的查詢看起來好像會起作用。你使用什麼數據庫服務器? – gmm 2013-04-24 00:48:37

+0

這是校園裏的一個。甲骨文,我相信 – user2313460 2013-04-24 00:50:25

回答

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, '%') 

請注意,您必須使用部分文字匹配的問題。所以,「不喜歡」的東西會匹配「喜歡」。您可能希望查看您使用的任何數據庫的全文功能,因爲它考慮了標點符號,全文和停止列表。

+0

此查詢的工作原理: SELECT SUM(K.Score) FROM Wreck_it_Ralph WIR,關鍵字k WHERE t_text LIKE'%'|| k.word || '%' – user2313460 2013-04-24 01:02:24

+0

謝謝!我不明白這些||符號正在通過 – user2313460 2013-04-24 01:02:48

+0

@ user2313460執行。 。 。這恰好是字符串連接的Oracle語法。 – 2013-04-24 01:07:34

0

MSSQL-:

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