SQL Server相当于这个MySQL排序子句

aid*_*dan 2 sql t-sql sql-server sql-server-2008

我想基于两个VARCHAR列我的结果进行排序COL_ACOL_B.

如果值COL_A('val1', 'val2', 'val3'),我希望它的出现在顶部,否则,我希望它出现在底部.然后,我想在COL_B上做一个简单的词典排序.在MySQL中,我会这样做:

ORDER BY IF(COL_A IN ('val1', 'val2', 'val3'), 0, 1), COL_B
Run Code Online (Sandbox Code Playgroud)

但这在SQL Server 2008中不起作用.是否有等价的?

Fre*_*cer 5

case when在您尝试的查询中使用而不是IF.

ORDER BY (Case When COL_A IN ('val1', 'val2', 'val3') Then 0 Else 1 End), COL_B
Run Code Online (Sandbox Code Playgroud)

把它放在你试过的查询的位置.

MSDN:

http://msdn.microsoft.com/en-IN/library/ms181765.aspx

语法和示例:

http://blog.sqlauthority.com/2007/04/14/sql-server-case-statementexpression-examples-and-explanation/

教程可能有用:

http://www.tizag.com/sqlTutorial/sqlcase.php