0

先行ゼロを追加する必要があるデータがあります。しかし、問題はデータ型が float であることです。したがって、ゼロを追加すると、自動的にゼロが省略されます。先行ゼロを追加してから、varchar(50) に変換しようとしました。

次のクエリを使用しました (Damien_The_Unbeliever 氏に感謝):

select  '0' + convert (varchar(50), (wallet_sys)) as wallet_sys  from NewSysData1

ただし、結果は次のように表示されるのではなく、次のように表示されます: 01.72295e+009: 01718738312

私は何をすべきか?

PS: サンプル データの一部を以下に示します。

1718738312, 8733983312, 9383879312

私はこれらをしたい:

01718738312, 08733983312, 09383879312
4

4 に答える 4

2

str() 関数とトリムを使用できます

select '0' + ltrim(rtrim(str(wallet_sys))) as wallet_sys from NewSysData1;

SqlFiddle

于 2013-09-05T16:03:42.370 に答える
0

マニュアルから: http://technet.microsoft.com/en-us/library/ms187928.aspx

CONVERT の構文:

CONVERT ( データ型 [ ( 長さ ) ] , 式[ , スタイル ] )

-

float と real のスタイル

expression がfloatまたはreal の場合、style は次の表に示す値のいずれかになります。その他の値は 0 として処理されます。

-

Value          | Output
---------------+---------------------
0 (default)    | A maximum of 6 digits. Use in scientific notation, when appropriate.
1              | Always 8 digits. Always use in scientific notation.
2              | Always 16 digits. Always use in scientific notation.
126, 128, 129  | Included for legacy reasons and might be deprecated in a future release.

科学的表記法にない長い値は、どの書式設定オプションでも許可されないことに注意してください。

したがって、暫定的に別の型に変換する必要があります。

SELECT '0' + Convert(varchar(50), Convert(decimal(38, 10), Convert(float, '1.72295e+009'), 0))

decimalタイプのスケールを変更して小数点以下の桁数を調整する

于 2013-09-05T16:24:50.623 に答える