私は、000000000000055000の行に沿って何か見えるvarchar(18)を持っています。これは55.00となります。最後の桁は常に0で、残りの数字はゼロで埋められます。テキストを10進数に変換する方法
他の例は次のようになります -
000000000000001260から1.26
000000000000039400から39.40私は私が持っているものから私が必要とするものに変換する方法を
?多くのありがとう
私は、000000000000055000の行に沿って何か見えるvarchar(18)を持っています。これは55.00となります。最後の桁は常に0で、残りの数字はゼロで埋められます。テキストを10進数に変換する方法
他の例は次のようになります -
000000000000001260から1.26
000000000000039400から39.40私は私が持っているものから私が必要とするものに変換する方法を
?多くのありがとう
、私は(try_convertを示唆している):
もこれを参照してください。 Try_Convert()はエラーを生成しませんが、偽のデータの場合はnullを返します。
例
Declare @YourTable table (SomeCol varchar(50))
Insert Into @YourTable values
('000000000000001260')
,('000000000000039400')
Select SomeCol
,AsValue = convert(decimal(18,2),somecol)/1000
From @YourTable
戻り
SomeCol AsValue
000000000000001260 1.2600000
000000000000039400 39.4000000
ありがとうございました – ikilledbill
@ikilledbillハッピーに役立ちました。ところで - 非常にクールな名前。 :) –
もし私が小数点以下2桁しか表示しないようにしたいのであれば、どうすればこのようにするのですか?この例では1.26と39.40ですか?このような – ikilledbill
これはSQLだと思いますか?
btwの場合、10進数のvarcharはt-sqlで暗黙的に変換されます。 これをSQLクエリで試してみると、何を意味するのかわかります。いうだけで変換()より2012+場合 https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-conversion-database-engine
DECLARE @ValueToConvert VARCHAR(18) = '00000000005320'
DECLARE @ValueConverted Decimal(18,2) = 0
DECLARE @Padding Int = 2
DECLARE @temp1 VARCHAR(18) = SUBSTRING (@ValueToConvert ,0 , CHARINDEX('0', @ValueToConvert,LEN(@ValueToConvert)) - @Padding)
DECLARE @temp2 VARCHAR(18) = SUBSTRING (@ValueToConvert , CHARINDEX('0', @ValueToConvert,LEN(@ValueToConvert)) - @Padding, CHARINDEX('0', @ValueToConvert,LEN(@ValueToConvert)))
set @ValueConverted = (concat(@temp1,'.',@temp2))
SELECT @ValueConverted
あなたのアドバイスありがとうございました – ikilledbill
ヒント:これは、適切なソフトウェア(MySQLのは、Oracle、DB2、...)とバージョンの両方で、データベースの質問にタグ付けすると便利です、例えば'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 – HABO