2012-01-12 5 views
0

char(4)を2つ比較しなければなりません。したがって、私は他のフォーマットと比較できるように一つのフォーマットにしたいと思います。基本的には、プレフィックスのついたゼロと後続のスペースがあればそれを削除する必要があります。接頭辞付きの指定されたすべてのcharとpostfixのスペースを削除する

文字:例えば

'001 ''1'両方が

'010 ''10'をフォーマットした後'1A'を比較する必要があり、両方が

'001A''1A'をフォーマットした後'1'と比較すべきであるべき両方がと比較されます

'010A''10A'をフォーマットした後、両方の両方が

select Replace(Ltrim(Replace(Rtrim(@charToBeFormatted), '0', ' ')), ' ', '0') 

は思わフォーマット後'100A'に比較する必要があり

'100A'をフォーマットした後'100'に比較する必要があり

'100 ''100'をフォーマットした後、'10A'に比較する必要があります仕事をするが、再浪費している文字列を2回配置してみると、実際に意図を明確にすることはできません。

より効率的かつ/またはエレガントな方法で結果を達成できますか?

+0

@Benoit [LTRIM](http://msdn.microsoft.com/en-us/library/ms177827.aspx)と[RTRIM ](http://msdn.microsoft.com/en-us/library/ms178660.aspx)は、2番目のパラメータを使用しません。 –

+0

@JoeStefanelliええ、あなたが何を意味するか分からない。この例のLTRIMとRTRIMの両方には、1つのパラメータしかありません。あなたは精緻化できますか? (可読性/明確な意図がないという問題の根底にあるのかもしれない) – steenhulthin

+0

私は@Benoitによって投稿されたcommmentに応答していました。 –

答えて

1

結果は数字であると思われますか?このようなことをするよりも、次のようなことがあります。 convert(int、 '0010')

+0

のdupeとしてクローズすることに投票しました。いいえ、それは数。 char '1A'は私の問題でintとして意味をなさない。 – steenhulthin

+0

おそらく16進数ですか? – HABO

+0

そうです、私はそれを逃しました。あなたはこれを見た:http://stackoverflow.com/questions/92093/removing-leading-zeroes-from-a-field-in-a-sql-statement? @var varchar(20)= '0010' Rtrim(RIGHT(@ var、patindex( '%[^ 0]%'、@ var)))を選択してください)を宣言してください。 – Mordechai

関連する問題