1

インポートをテキストに変換する必要がありVarChar、このコードが見つかりました

select * from [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] where ISNUMERIC(201307)=0
alter table [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] Add 201307_Temp decimal(17,4) 
GO

--Update temporary column with the values from 201307
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set 201307_Temp = 201307
GO

--set 201307 to null
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set 201307 = NULL
GO

--Change the datatype of 201307
alter table [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite]  alter column 201307         decimal(17,4) 
GO

--Update the numeric values in 201307
--before doing this you have make sure select * from [VWSA_Sewells].[dbo].    [Sewells_1Mth_Composite] where ISNUMERIC(201307_Temp)=0 returns nothing.
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set 201307 = Cast(201307_Temp as     decimal(17,4))
GO

私のテーブルには、Ratio_IDたとえば列 1に a が含まれており、見出し 201307 の下の列 2 にVW1537_is02pは実際の値が含まれています。Ratio

列 201307 には、0.2242、5042050.40 などの数値データのみが含まれます。小数点以下 4 桁を超える数値はありません。

SQL Server 2008 のエラー メッセージは次のとおりです。

メッセージ 102、レベル 15、状態 1、行 3
'201307' 付近の構文が正しくありません。

10 進数が最大 10 億と 4 桁の金額を提供し、クエリ (>1 など) を許可する限り、10 進数に固執することができます。

何か案は?

4

1 に答える 1

0

これはうまくいくはずです:

select * from [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] where ISNUMERIC([201307])=0
alter table [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] Add [201307_Temp] decimal(17,4) 
GO
--Update temporary column with the values from 201307
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set [201307_Temp] = [201307]
GO
--set 201307 to null
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set [201307] = NULL
GO
--Change the datatype of 201307
alter table [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite]  alter column [201307] decimal(17,4) 
GO
--Update the numeric values in 201307
--before doing this you have make sure select * from [VWSA_Sewells].[dbo].    [Sewells_1Mth_Composite] where ISNUMERIC(201307_Temp)=0 returns nothing.
update [VWSA_Sewells].[dbo].[Sewells_1Mth_Composite] set [201307] = Cast([201307_Temp] as decimal(17,4))
GO

ラージ

于 2013-09-05T07:31:45.113 に答える