【发布时间】:2021-05-26 09:59:43
【问题描述】:
尝试将 DB2 查询 ORDER BY 条件转换为 SQL Server
DB2 查询
ORDER BY
CASE WHEN LEN(RTRIM(LTRIM(CorpName))) > 1 THEN CorpVal Else '999' END,
CASE WHEN SUBSTRING(FName,1,1) != '*' THEN FName Else '999' END
SQL 查询
ORDER BY
CASE WHEN CorpName like '[a-z]%' THEN 0 ELSE 1 END,
CASE WHEN FName like '[a-z]%' THEN 0 ELSE 1 END
我有类似的数据
ABC, 24KS, 安倍, 阿杰西, -额外的, ABF, 1X1
我需要如下输出
ABC, 安倍, ABF, 阿杰西, 24KS, 1X1, -额外的
这对我不起作用,需要更多建议。
【问题讨论】:
-
第一个查询,即 DB2 查询,也可以在 SQL Server 中工作。
LEN、RTRIM、LTRIM、SUBSTRING也是T-SQL中的函数,还支持CASE表达式。如果你有一个有效的表达式,为什么要改变它? -
样本数据也有助于您的问题更容易理解。
-
@Larnu 我同意,我的想法是一样的,但它的行为不同,我的意思是在 DB2 中它按预期工作,但在 SQL Server 中使用此条件时它不工作
-
“不工作”是什么意思?
-
@Larnu 不工作意味着,不排序.. 所以在 DB2 数据排序为 ABC、PQR、24KS 和 SQL Server 它显示 24KS、ABC、PQR
标签: sql-server sql-order-by db2-400