Server桁数が異なる数値を含む文字列を"数値を考慮して"ソートする方法2016/5/15文書番号:20499数値を含む文字列を数値を考慮してソートしたいことはよくあると思います。VARCHAR)型の列にある数値は数値のみであっても文字列として扱われますので普通にソートすると以下のようになります。部分でだけ数値に変換するとうまくソートできます。CONVERT(int,データ)以下のようにデータが数値以外を含む場合は数値型に変換できませんので上記の方法は使えません。文字列の長さも考慮するとうまくソートできます。データこれは応用編ですが、ハイフンの後に英字が付くものが含まれる場合で、英字で始まるものを先にしたい場合。ハイフンの後の1文字が数値かどうかを考慮するようにします。1.文字列の中からハイフンの位置を取得する(CHARINDEX)2.ハイフンの次にある一文字を取得する(SUBSTRING)3.その文字が数値かどうかで判断する(ISNUMERIC)4.文字列の長さで判断する(LEN)5.最後に通常のソートというようにするとうまくソートできます。やりすぎるとレスポンスに影響する場合があるのでその辺も考慮しながら考える必要があります。その場合は事前にソートするための情報を列に持っておいた方がいい場合もあるかもしれません。実際の環境に合わせて試してみてください。