我有如下表結構:獲取兩列,如果條件的MySQL
cv1 cv2 cv_content1 cv_content2
abc xyz php,mysql sql dotnet
aaa xxx java php is my skill
我有兩個關鍵字,可以說,PHP和DOTNET。現在我想從上面的表t1獲取記錄,其中前面提到的兩個關鍵字在列cv_content1和cv_content2中有OR條件。我想下面的記錄:
cv1 cv2
abc xyz
--- xxx
我試圖case語句,如果還和我也有檢查多少關鍵字匹配例如,對於結果的第一行中的記錄是100%(PHP和DOTNET都是行),但第二行是50%(只有PHP匹配)。
我想下面的查詢到目前爲止:
SELECT ROUND(((if(LOCATE("php",cv_content1)>0,25,0) OR if(LOCATE("php",cv_content2)>0,25,0)) + if(LOCATE("dotnet",cv_content1)>0,25,0) OR if(LOCATE("dotnet",cv_content2)>0,25,0)) * 100)/50) as SkillTot,if (own_content regexp '[[:<:]]smith[[:>:]]',`own_filename`),if (kings_content regexp '[[:<:]]smith[[:>:]]' ,`kings_filename`) FROM `t1`WHERE (cv_content1 REGEXP '[[:<:]]php[[:>:]]' OR cv_content2 REGEXP '[[:<:]]php[[:>:]]' OR cv_content1 REGEXP '[[:<:]]dotnet[[:>:]]' OR cv_content2 REGEXP '[[:<:]]dotnet[[:>:]]')
它有一個語法錯誤也。不明白如何使用if語句
所以你試過? –
您存儲關鍵字的方式很糟糕。您將面臨查詢數據的問題 – asprin
cv_content1和cv_content2字符串是否存在?而所有的標籤只是逗號分隔的字符串?如果是這種情況,你應該改變你的數據庫佈局 – WizKid