0

私がやろうとしているのは、テーブルの2つのフィールドを連結し、連結されたフィールドの長さの降順で並べ替えて、最高の結果を取得することです...

これが私がこれを達成するために使用している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

board_name | base_color | shadow_color
=====================================
board0001 | クリア| ヌル
board0002 | クリア| 青
board0003 | ブロンズ| ブロンズ
board0004 | ブロンズ| 緑
board0005 | ブロンズ| 青
board0006 | ブロンズ| ヌル

次に、 board0003であり、ブロンズ/ブロンズであると予想@board_nameしますが、代わりに取得しているように見えるのは、= board0001、= clearのような結果です。@color@board_name@color

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 に答える