私は私のSQLテーブルに列があります。私の列の値が10未満のときに、先行ゼロをどのように追加することができますか?だから、例えば:numberが10未満の場合、先行ゼロを追加するにはどうすればよいですか?
number result
1 -> 01
2 -> 02
3 -> 03
4 -> 04
10 -> 10
私は私のSQLテーブルに列があります。私の列の値が10未満のときに、先行ゼロをどのように追加することができますか?だから、例えば:numberが10未満の場合、先行ゼロを追加するにはどうすればよいですか?
number result
1 -> 01
2 -> 02
3 -> 03
4 -> 04
10 -> 10
あなたはRIGHT
を使用することができます。
Number
秒間
SELECT RIGHT('0' + CAST(Number AS VARCHAR(2)), 2) FROM tbl
、あなたがCASE
の式を使用:
SELECT
CASE
WHEN Number BETWEEN 0 AND 99
THEN RIGHT('0' + CAST(Number AS VARCHAR(2)), 2)
ELSE
CAST(Number AS VARCHAR(10))
END
FROM tbl
Select case when Number between 1 and 9
then '0' else '' end + cast(number as varchar(3))
あなたの助けてくれてありがとう、私もそれを試みます – RedRocket
別の方法、
select case when number <10 then replicate('0',1)+cast(number as varchar)
else cast(number as varchar) end
なぜ 'REPLICATE'を使うのですか?なぜ「0」だけではないのですか? –
素晴らしい@FelixPamittan、あなたは正しいです。私たちは1つだけ0を繰り返す必要がありますが、複製は使用されませんが、0がその上で繰り返されるときに入れます。私はちょうど異なるアプローチを示したかったので、 – KumarHarsh
そして、まだもう一つの解決策を:あなたがあなたのテーブルに100以上の数字を持っていない限りフェリックスのソリューションは、その場合には、代わりにcase文を使用してみてください、素晴らしいです。
SELECT REPLACE(STR(@YourNumber,2),' ','0');
私は他のアプローチは、あなたが指定した桁数のカウントよりも広い数字の場合はランダムな結果をもたらす可能性があるとして、これを好む:
しかし、それはnegativ数字を扱っています...
DECLARE @YourNumber INT=123;
SELECT REPLACE(STR(@YourNumber,5),' ', '0') --pad to five digits
,REPLACE(STR(@YourNumber,3),' ', '0') --pad to 3 digits
,REPLACE(STR(@YourNumber,2),' ', '0'); --123 is wider than 2 digits...
結果一般
0
123
**
、あなたがいないデータベース層では、プレゼンテーション層では、この書式設定を行う必要があります。 – RichardCL
値が100または1000より大きい場合、結果はどうなりますか? –