第一ソリューション
スクリプトコンポーネントの.NETメソッドでは、値が数値であるかどうかをチェックします。
1)スクリプトコンポーネント チェックを行う必要がある場所でスクリプトコンポーネント(タイプ:変換)を追加します。
2)入力列の選択 入力列としてチェックする必要がある列を追加します。
3)出力列を追加します。 [入力と出力]タブの[出力]列に新しい列を追加します。型式はブール値で、適切な名前を付けます。
4)スクリプト
'VB.Netコード は、' 文字列値が数 輸入システム 輸入System.Data 輸入System.Mathの 輸入Microsoft.SqlServer.Dts.Pipelineが含まれているかどうか確認してください。 輸入Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain
Inherits UserComponent
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
' Standard VB.net method, indicating whether
' an expression can be evaluated as a number
If (IsNumeric(Row.InputCol)) Then
Row.IsNumeric = True
Else
Row.IsNumeric = False
End If
End Sub
End Class
に
5ラッパー)行
をフィルタリングする条件分割を作成しますコラム
1派生
第二ソリューション
)あなたがチェックを行う必要があります派生列を追加します派生列 を追加します。
2)式を追加してください 新しい列を次の式で追加し、適切な名前を付けてください:!ISNULL((DT_I8)TextNumbers)
。すべての数字はTrueになり、すべての数字以外はエラーになります。
3)エラーを無視する 派生列の[エラー出力の構成]ウィンドウに移動し、新しいフィールドのエラーを無視します。
4)結果 は、第二の溶液にISNULL
発現
3ソリューションデータ変換 と
データ変換
1)の代替を使用して行をフィルタリングする条件分割を追加することができデータ変換変換を使用して値をintに変換しようとするとエラーを無視してください。 ISNULL
式
を使用して条件付き分割を追加するだけで、要件を満たすことができます。https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-conditional-split/ – mohan111
こんにちは!応答をありがとうが、私は条件付き分割のためのより具体的なコーディングアドバイスを探しています。基本的には、Splitは、最初の文字としてPを含むレコードが含まれていますが、その後に数字が続くため、他の行を「ブロック」する必要があります。つまり、値が "Person Value 1234"の場合、 "P"の後に数字がないため、このレコードをブロックしないでください。現在のコード(まだ動作しません): FINDSTRING(値、 "P"、1)> 0 && CODEPOINT([値]、FINDSTRING(値、 "P"、1)、3)) > 47 && CODEPOINT(SUBSTRING(値、FINDSTRING(値、 "P"、1)、7))<58 – Steve
私はあなたの最初の行の変更がExcelドライバの*ひどい*アプローチと関係があるかもしれないと推測していますデータ型を推測するデータ型が間違っていると推測され、それについてはあまりできません。このようにhttps://msdn.microsoft.com/en-us/library/ms141683.aspxに_Missing Values_というセクションを読んでください。この問題はインターネット上で発生しています。あなたの値がNULLではなくゼロである理由は分かりませんが、それは確かです。回避策のために* IMEX *を参照してください –