HCL*_*HCL 10 sql-server sql-server-2005
是否有可能通过ORDER
包含表达式的子句对结果进行排序,例如
SELECT colX0 FROM tbp_name ORDER BY (colX1 IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)
还是一个更复杂的表达?
更新:
同时我发现有可能解决上述问题:
ORDER BY (case WHEN colX1 IS NULL THEN 1 ELSE 0 END ) ASC
Run Code Online (Sandbox Code Playgroud)
但问题仍然存在,如果有可能通过表达直接命令.
gbn*_*gbn 18
不,SQL Server不支持将表达式直接转换为true/false.
恕我直言,一个原因是3值逻辑.这有3个结果,而不是2,任何一列都是NULL.NULL通常是SQL中的第一个,始终是Server,但可以在其他RDBMS中最后指定.
ORDER BY (colX1 = colX2)
Run Code Online (Sandbox Code Playgroud)
使用CASE可以减轻这种影响并消除歧义
ORDER BY
CASE
WHEN colX1 = colX2 THEN 1
WHEN colX1 <> colX2 THEN 2
ELSE 3 NULL case
END
Run Code Online (Sandbox Code Playgroud)
您必须根据更新使用CASE,以及确保WHEN子句中的数据类型匹配(或至少可隐式转换).
归档时间: |
|
查看次数: |
8770 次 |
最近记录: |