向Decimal类型列插入空值时触发TypeConversionFailure错误求助
问题描述
向Decimal类型列插入空值时触发以下错误:
ErrorCode=TypeConversionFailure,Exception occurred when converting value '' for column name 'xyz' from type 'String' (precision:, scale:) to type 'Decimal' (precision:18, scale:0). Additional info: The input wasn't in a correct format.
尝试过以下两种处理逻辑,均未解决问题:
- 判断值是否为字符串
'null':@if(equals(activity('Lookup1').output.value[int(variables('i'))].eftEnrollmentUniqueIdentifier,'null'),'NULL',activity('Lookup1').output.value[int(variables('i'))] - 判断值是否为空字符串
''
Lookup活动输出中,目标字段eftEnrollmentUniqueIdentifier存在原生null值(非字符串类型)。
解决方案
核心问题
你之前的判断针对的是字符串类型的'null'或'',但Lookup输出里的空值是原生null类型,两者类型不匹配导致判断失效;同时返回字符串'NULL'无法被Decimal列识别,依然会触发类型转换错误。
有效处理逻辑
方法1:用empty()函数兼容空字符串和原生null
empty()函数可同时识别空字符串''和原生null,匹配时返回原生null(Decimal列可接收的空值类型):
@if(empty(activity('Lookup1').output.value[int(variables('i'))].eftEnrollmentUniqueIdentifier), null, activity('Lookup1').output.value[int(variables('i'))].eftEnrollmentUniqueIdentifier)
方法2:直接判断原生null
直接匹配Lookup输出中的原生null值,返回原生null:
@if(equals(activity('Lookup1').output.value[int(variables('i'))].eftEnrollmentUniqueIdentifier, null), null, activity('Lookup1').output.value[int(variables('i'))].eftEnrollmentUniqueIdentifier)
关键注意点
必须返回原生null(不带引号),而非字符串'NULL',否则数据库依然无法将字符串转换为Decimal类型。
内容的提问来源于stack exchange,提问作者Prasanna
相关产品推荐
相关产品推荐

