0

我想要做的是连接表的两个字段,按连接字段的降序长度对它们进行排序并获得最高结果......

这是我用来尝试实现这一目标的 SQL...

declare @color nvarchar(255);
declare @board_name nvarchar(255);

select top(1)
    @board_name = board_name, 
    @color = base_color + case when shade_color is null then '' else '/' + shade_color end 
from 
    cut_vinyl
order by 
    len(@color) desc;

select @board_name, @color;

所以,如果我有下表cut_vinyl

板名| base_color | shade_color
======================================
板0001 | 明确 | 无效的
板0002 | 明确 | 蓝色的
板0003 | 青铜 | 青铜
板0004 | 青铜 | 绿色
板0005 | 青铜 | 蓝色的
板0006 | 青铜 | 无效的

然后我希望@board_name成为board0003@color成为青铜/青铜,但我似乎得到的是像@board_name= board0001@color= clear这样的结果

4

1 回答 1

1

您正在订购variable

order by 
    len(@color) desc;

如果您正在寻找最长的颜色,请使用:

order by 
    len(base_color) + len(shade_color) desc;

反而。

于 2012-07-31T07:08:06.283 回答