2

こんにちは、dtsx パッケージを使用して SQL サーバー ビジネス インテリジェンス開発スタジオに非常に新しい小さなプロジェクトを行っています。

int値を保持するNumberという列名のExcelファイルがあります

派生列変換を使用しています

式を使用して値が int かどうかを確認する方法はありますか?

何らかの種類の整数送信エラーでない場合

ありがとうございました。

4

2 に答える 2

1

C# には IsNumeric(VB.Net) はありませんが、TryParse を使用して同じ機能を実現できます

public override void Input0_ProcessInputRow(Input0Buffer Row)
{

    int result;
    if (int.TryParse(Row.Column.ToString(), out result))
    {
        Row.IsNumeric = 1;
    }
    else
    {
        Row.IsNumeric = 0;
    }

}

vb.Net の同じコードは

 If IsNumeric(Row.Column) Then 
 Row.IsNumeric=1          // Create a `IsNumeric`  output column in script   transformation of data type int
 Else
 Row.IsNumeric=0
 End If

上記の機能はDerived Column Transformation、式を使用して実現することもできます

ISNULL((DT_I4)(Column) == (DT_I4)(Column) ? 1 : 0) ? 0 : 1

SOで以前の回答を確認してください

于 2013-01-09T06:41:16.600 に答える
0

SSIS 式言語には IsNumeric() 関数がないため、派生列コンポーネントを使用して同じことを行うことはできません。代わりにスクリプト コンポーネントを使用する必要があります。スクリプト コンポーネント内の次のコードは、同じことを実現します。

Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
   Inherits UserComponent

   Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        Dim retNum As Double
        'use TryParse to test if the value is numeric or not

        If System.Double.TryParse(Row.Column, retNum) Then
            Row.DirectRowToNumeric()
        Else
            Row.DirectRowToNonNumeric()
        End If
    End Sub
End Class

お役に立てれば

ラージ

于 2013-01-09T03:12:16.477 に答える