2011-11-06 115 views
2

我有一個表[Table] 3列[Column1],[Column2][Column3]計算多少列匹配條件

我的條件是:

WHERE [Column1] LIKE '%q%' OR [Column2] LIKE '%q%' OR [Column3] LIKE '%q%' 

它的工作原理,但我想通過比賽的數量結果進行排序。

例如

C1 - C2 - C3 
q - q - q 
q - a - q 
q - a - a 
+0

你的意思是你想匹配的列數訂購? –

回答

2

嘗試在查詢此ORDER BY條款:

ORDER BY (CASE WHEN [Column1] LIKE '%q%' THEN 1 ELSE 0 END + 
      CASE WHEN [Column2] LIKE '%q%' THEN 1 ELSE 0 END + 
      CASE WHEN [Column3] LIKE '%q%' THEN 1 ELSE 0 END) DESC 
0

你或許應該第四列,類似添加到此:

SELECT [Col1],[Col2],[Col3], 
    CAST([Col1] LIKE '%q%' AS SMALLINT) + CAST([Col2] LIKE '%q%' AS SMALLINT) + 
    CAST([Col3] LIKE '%q%' AS SMALLINT) AS Strength 
.... 
ORDER BY Strength 

因爲我不不知道您使用的是哪個數據庫,您可能需要查閱文檔以瞭解如何使用st從一個布爾值到一個整數。

伊泰

1
SELECT [Column1], [Column2], [Column3] FROM [Table] 
WHERE [Column1] LIKE '%q%' OR [Column2] LIKE '%q%' OR [Column3] LIKE '%q%' 
ORDER BY 
    (CASE WHEN [Column1] LIKE '%q%' THEN 1 ELSE 0 END) + 
    (CASE WHEN [Column2] LIKE '%q%' THEN 1 ELSE 0 END) + 
    (CASE WHEN [Column3] LIKE '%q%' THEN 1 ELSE 0 END) 
    DESC