使用多个where-like语句在t-sql中按匹配精度排序

时间:2011-04-02 20:57:04

标签: sql sql-server tsql

我正在构建一个这样的查询:

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

我想在一个ORDER BY子句上标记按发现的匹配数量排序 - 这与在结果集中创建一些额外列的行相似,如果a增加b,{在该字段中找到{1}}或c,然后按该号码排序。

这可能不会创建某种临时表吗?

1 个答案:

答案 0 :(得分: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