2016-10-07 8 views
0

にソース表から問題を変換:T-SQLのキャストと、次のように私はテーブルを持って先

create table dbo.##Table_A00 
(
    RowNo int, 
    TRANSACTION_TYPE varchar(3), 
    ORGANISATION_ID numeric (10), 
    FILE_TYPE varchar(3), 
    CREATION_DATE datetime, 
    CREATION_TIME varchar(3), 
    GENERATION_NUMBER numeric (6) 
) 

私が使用していたソースファイルはフラットファイルをキャプチャするために使用されるテーブルであり、それらはいずれにもすることができしかしながら、データ形式。

私はソーステーブルに持っているどのようなデータ型は次のようになります。

CREATE TABLE ##Table_Alltextfiles 
(
    rowID int identity (1,1), 
    [Col1] varchar(50), 
    [Col2] varchar(250), 
    [Col3] varchar(50), 
    [Col4] varchar(50), 
    [Col5] varchar(50), 
    [Col6] varchar(50), 
    [Col7] varchar(50) 
) 

私は何をしたい##Table_Alltextfilesから##Table_A00(宛先)にすべての行を挿入している(ソース)

しかし、私をデータ型としてこれを行うことに問題があるのは間違っています。私は成功せずにキャストしようとしました。

varcharの値を適切な宛先に取得するには、どうすればよいのですか。つまり、日付フィールドまたは数字の場合です。

これは私がやってトリングされているものです:

insert into dbo.##Table_A00 
    select 
     rowID, 
     col1, cast(col2 as numeric (10)), 
     col3, cast(col4 as date), 
     col5, cast(col6 as numeric (6)) 
    from 
     ##Table_Alltextfiles 
    where 
     col1 = 'A00' 

+0

また、エラー情報を投稿する必要があります。 –

答えて

1

は、以下のクエリを使用して試してみていただきありがとうございます。

insert into dbo.##Table_A00 
    select 
     rowID, 
     SUBSTRING(col1,1,3), case when ISNUMERIC(col2)=1 THEN cast(col2 as numeric (10)) ELSE NULL END, 
     SUBSTRING(col3,1,3), case when ISDATE(col4)=1 THEN cast(col4 as datetime) ELSE NULL END, 
     SUBSTRING(col5,1,3), case when ISNUMERIC(col6)=1 THEN cast(col6 as numeric (6)) ELSE NULL END 
    from 
     ##Table_Alltextfiles 
    where 
     col1 = 'A00' 
+0

ありがとうございました、あなたの答えられた仕事、しかし私が得られないものは、case文の評価は常に1(数値または日付のように)に等しくなります。しかし、これはうまくいかないでしょう: – abs786123

+0

dboに挿入## Table_A00は ROWID、 \t \t SUBSTRING(col1,1,3)、 \t \tキャスト、 \t \t SUBSTRING(col3,1,3)(数値(10)などCOL2)、 \t \tキャスト(COL4などを選択し 日時)、 \t \tサブストリング(col5,1,3) \t \tキャスト(6)) \t \t数値としてCOL6 から## COL1 = 'A00' – abs786123

+0

は思っTable_Alltextfiles は、あなたはヌルを考慮する必要がありますか?それがなぜ機能するのですか – abs786123

関連する問題