說我有一個表稱爲PHRASES
包含一些文本字符串如何計算表格中的每個關鍵字出現在短語表中的次數?
+--+---------------+
|ID|PHRASE |
+--+---------------+
|0 |"HELLO BYE YES"|
+--+---------------+
|1 |"NO WHY NOT" |
+--+---------------+
|2 |"NO YES" |
+--+---------------+
而且我想補充以下每個單詞出現的OCCURRENCE
列的次數,我們稱之爲表KEYWORDS
:
+--------+----------+
|KEYWORD |OCCURRENCE|
+--------+----------+
|"YES" |NULL |
+--------+----------+
|"NO" |NULL |
+--------+----------+
|"HELLO" |NULL |
+--------+----------+
|"CHEESE"|NULL |
+--------+---------+
我現在想寫一個查詢,將更新KEYWORDS
以下幾點:
+--------+----------+
|KEYWORD |OCCURRENCE|
+--------+----------+
|"YES" |2 |
+--------+----------+
|"NO" |2 |
+--------+----------+
|"HELLO" |1 |
+--------+----------+
|"CHEESE"|0 |
+--------+----------+
請注意,我已經有一個叫做dbo.RegExIsMatch
功能,可以採取字符串匹配的照顧,使得其返回1
參數1個字符串匹配參數2:
UPDATE KEYWORDS SET OCCURRENCE =
(
SELECT SUM
(
-- the following returns 1 if the keyword exists in the phrase, or 0 otherwise
CASE WHEN dbo.RegExIsMatch('.*' + KEYWORDS.KEYWORD + '.*',PHRASES.PHRASE,1) = 1 THEN 1 ELSE 0 END
)
FROM PHRASES
CROSS JOIN KEYWORDS
)
這不工作,雖然,它只是用相同的數字填充每行。我確信這是一個簡單的問題,我只是努力讓我的頭腦思考SQL。
這樣做沒有將'KEYWORD' CHEESE的'OCCURRENCE'的值設置爲0. – ErikE