2011-04-02 11 views
2

我建立一個查詢像這樣:排序由匹配精度在T-SQL使用多個地方類似的語句

SELECT * FROM mytable 
WHERE field like '%a%' 
OR field like '%b%' 
OR field like '%c' 

我想上ORDER BY條款標記的訂單通過匹配量找到了 - 在結果集中添加一些額外列的行數,如果在該字段中找到abc,然後按該數字排序,則結果集中會增加一列。

這可能沒有創建某種臨時表?

回答

1

如果此表全部大而無查詢,您可能需要查看全文索引。

SELECT * 
FROM mytable 
WHERE field like '%a%' 
     OR field like '%b%' 
     OR field like '%c' 
ORDER BY CASE 
      WHEN field like '%a%' THEN 1 
      ELSE 0 
      END + CASE 
        WHEN field like '%b%' THEN 1 
        ELSE 0 
       END + CASE 
         WHEN field like '%c%' THEN 1 
         ELSE 0 
         END