質問: どうすればvarcharフィールドをTSQLの右側に揃えることができますか? MyCodeと呼ばれる列に「11(スペース)」、「109」、「X(スペース)(スペース)」、「9(スペース)(スペース)」、「15 varchar(3)。 私がそれらを注文するとき、私はASCの順序でそれらを注文するとき109の前に11のようなprolbmeを持っています。 ORDERという結果になるように、空のcharを先頭に追加して値を右に揃えたい: ``` " 11" .. "109" ``` **Question**: How can I write my SELECT MyChar FROM MyTable so that for a value "1(space)(space)" it should return "(space)(space)1" etc. ? --- @gbn:あなたの答えは私が必要としたものでしたが、出力は変わりませんでした: !enter image description here
回答: これを使用して常に先頭のスペースを固定長にします ``` SELECT RIGHT( SPACE(5) + REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(MyChar), CHAR(160), ''), CHAR(9), ''), CHAR(10), ''), CHAR(13), '') , 5) AS Justified FROM MyTable ORDER BY Justified ``` 1つの `5` を変更する場合は、両方を変更する必要があります 編集:追加されたRTRIM 編集2:ハードスペースの追加+その他の印刷不可能な検出 これはあなたに何を与えるのですか? ``` SELECT ASCII(RIGHT(MyChar, 1) FROM MyTable ```