Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSIS派生列-数字字段中的文本未转换_Sql Server_Ssis_Derived Column - Fatal编程技术网

Sql server SSIS派生列-数字字段中的文本未转换

Sql server SSIS派生列-数字字段中的文本未转换,sql-server,ssis,derived-column,Sql Server,Ssis,Derived Column,我正在将数千个csv文件导入SQL数据库。它们都有两列:日期和值。在某些文件中,值列仅包含句点(例如:“.”)。我尝试创建一个派生列,该列将处理包含句点的任何单元格,代码如下: FINDSTRING((DT_WSTR,1)[VALUE],".",1) != 0 ? NULL(DT_R8) : [VALUE] 但是,当包运行时,当它到达包含句点的单元格时,会出现以下错误: The data conversion for column "VALUE" returned status value 2

我正在将数千个csv文件导入SQL数据库。它们都有两列:日期和值。在某些文件中,值列仅包含句点(例如:“.”)。我尝试创建一个派生列,该列将处理包含句点的任何单元格,代码如下:

FINDSTRING((DT_WSTR,1)[VALUE],".",1) != 0 ? NULL(DT_R8) : [VALUE]
但是,当包运行时,当它到达包含句点的单元格时,会出现以下错误:

The data conversion for column "VALUE" returned status value 2 and status text 
"The value could not be converted because of a potential loss of data".

我猜我的FINDSTRING函数中可能缺少一个转义字符,但我似乎找不到它可能是什么。有人对我如何解决这个问题有什么想法吗?

尝试调试类似的东西是我一直主张向数据流添加许多派生列的原因。不可能调试整个表达式。相反,首先找到句点的位置并将其添加为新列。然后,您可以将其输入到三元操作中,然后一点一点地添加数据查看器,以确保看到预期看到的内容

就我个人而言,我会采取不同的方法。似乎您希望将
中的任何列设置为DT_R8类型的null

添加派生列,
TrimmedValue
,并使用此表达式删除任何前导/尾随空格,然后

RTRIM(LTRIM(Value))
添加第二个派生列组件,这次我们将添加列
更年期值
,因为它将删除句点。使用这个表达式

(TrimmmedValue == ".") ? Trimmedvalue : NULL(DT_WSTR, 50)
现在,您可以添加最终的派生列,其中我们将值的字符串表示形式转换为浮点表示形式

IsNull(MenopausalValue) ? NULL(DT_R8) : (DT_R8) MenopausalValue
如果上面显示了错误,那么您需要应用以下版本,因为我永远记不起更改类型的三元操作的求值顺序

(DT_R8) (IsNull(MenopausalValue) ? NULL(DT_R8) : (DT_R8) MenopausalValue)
将这些操作分解为多个步骤以进行调试的示例


您可以这样做:

TRIM(Value) == "." ? NULL(DT_R8) : (DT_R8)Value


我认为需要在表达式之间切换位置,比如FINDSTRING((DT_WSTR,1)[VALUE],“,”,1)!=0 ? [值]:空(DT_R8)