您好我正在使用sql server 2008并且有一个大的存储过程,其中有多个where子句。在其中一个条款中,我有以下内容:
WHERE clause1
AND (clause2)
AND (clause3)
AND (clause4)
AND (clause5)
AND (clause6)
AND ( COL1 LIKE '%' + @VARIABLE + '%' OR COL2 LIKE '%' + @VARIABLE + '%')
我希望在一个订单中显示结果,我得到的结果首先在第7条中与BOTH匹配,然后是匹配的结果。这可能吗?我尝试过一些东西,但到目前为止还没有任何工作。 E.g:
SELECT
BLAH BLAH
FROM MULTIPLE TABLE JOINS
WHERE clause1
AND (clause2)
AND (clause3)
AND (clause4)
AND (clause5)
AND (clause6)
AND ( COL1 LIKE '%' + @VARIABLE + '%' OR COL2 LIKE '%' + @VARIABLE + '%')
ORDER BY
(CASE WHEN COL1 LIKE '%'+ @VARIABLE + '%' AND COL2 LIKE '%' + @VARIABLE + '%' THEN 1 ELSE 0 END) DESC
和
SELECT BLAH BLAH, (case when COL1 LIKE '%'+ @VARIABLE + '%' then 1 else 0 end) +
(case when COL2 LIKE '%'+ @VARIABLE + '%' then 1 else 0 end) as [priority]
FROM MULTIPLE TABLE JOINS
WHERE clause1
AND (clause2)
AND (clause3)
AND (clause4)
AND (clause5)
AND (clause6)
AND ( COL1 LIKE '%' + @VARIABLE + '%' OR COL2 LIKE '%' + @VARIABLE + '%')
ORDER BY [Priority]
还有一些但没有任何效果......
答案 0 :(得分:0)
您的第一个查询是根据您的条件订购:
CASE WHEN COL1 LIKE '%'+ @VARIABLE + '%' AND COL2 LIKE '%' + @VARIABLE + '%' THEN 1 ELSE 0 END
但是你的WHERE
条款多余了:
COL1 LIKE '%'+ @VARIABLE + '%' AND COL2 LIKE '%' + @VARIABLE + '%'
将CASE
语句从您的ORDER BY
添加到SELECT
,并且每行都会看到它1
,因此{{ 1}}正在按预期工作,它只是没有影响,因为所有记录都是由ORDER BY
订购的,如果您提供有关如何订购的其他详细信息,则需要更改1
条件有人肯定可以提供帮助。