嗨,我正在做一个对SQL服务器商业智能开发工作室很新的小项目,使用dtsx软件包,任何帮助都会很棒。
我有一个excel文件,其列名为Number,其中包含int值
我正在使用派生列转换
我可以使用表达式来检查值是否为int?
如果不是整数发送某种错误
谢谢。答案 0 :(得分: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
中查看我之前的answer答案 1 :(得分: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
希望这有帮助
拉吉