【问题标题】:The data types "DT_WSTR" and "DT_I4" are incompatible for binary operator "=="数据类型“DT_WSTR”和“DT_I4”与二元运算符“==”不兼容
【发布时间】:2019-05-17 19:58:48
【问题描述】:

我正在使用以下表达式:

[TIMEPERIOD_ID]==1?"JANUARY":
[TIMEPERIOD_ID]==2?"FEBRUARY":
[TIMEPERIOD_ID]==3?"MARCH": 
[TIMEPERIOD_ID]==4?"APRIL":
[TIMEPERIOD_ID]==5?"MAY":
[TIMEPERIOD_ID]==6?"JUNE":
[TIMEPERIOD_ID]==7?"JULY":
[TIMEPERIOD_ID]==8?"AUGUST":
[TIMEPERIOD_ID]==9?"SEPTEMBER":
[TIMEPERIOD_ID]==10?"OCTOBER":
[TIMEPERIOD_ID]==11?"NOVEMBER":
[TIMEPERIOD_ID]==12?"DECEMBER"

它会抛出以下异常:

错误 - 数据类型“DT_WSTR”和“DT_I4”不兼容 二元运算符“==”。操作数类型不能被隐式转换 转换为操作的兼容类型。要执行此操作, 一个或两个操作数需要使用强制转换运算符显式强制转换。

有什么建议吗?

【问题讨论】:

  • 错误告诉您TIMEPERIOD_IDnvarchar,但您将其与int 进行比较。
  • TIMPERIOD_ID 是长度为 50 的 UNICODE 字符串

标签: sql-server ssis expression etl derived-column


【解决方案1】:

从提到的错误来看,[TIMEPERIOD_ID] 数据类型似乎是DT_WSTR,它不能与整数值进行比较。试试下面的表达式:

[TIMEPERIOD_ID] == "1" ? "JANUARY" :
[TIMEPERIOD_ID] == "2" ? "FEBRUARY" :
[TIMEPERIOD_ID] == "3" ? "MARCH" : 
[TIMEPERIOD_ID] == "4" ? "APRIL" :
[TIMEPERIOD_ID] == "5" ? "MAY" :
[TIMEPERIOD_ID] == "6" ? "JUNE" :
[TIMEPERIOD_ID] == "7" ? "JULY" : 
[TIMEPERIOD_ID] == "8" ? "AUGUST" :
[TIMEPERIOD_ID] == "9" ? "SEPTEMBER" :
[TIMEPERIOD_ID] == "10" ? "OCTOBER" :
[TIMEPERIOD_ID] == "11" ? "NOVEMBER" :
[TIMEPERIOD_ID] == "12" ? "DECEMBER" : ""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2016-08-24
    • 2017-03-23
    相关资源
    最近更新 更多