Return a NULL DT_STR in a conditional statement

I have a requirement to convert all blank strings in a data flow into NULLs.  Here is the expression I tried first:

TRIM( [Some Column] ) == “” ? NULL( DT_STR, [length], 1252) : [Some Column]

This threw an error:

Error at Master DataFlow [Derived Column Task]: For operands of the conditional operator, the data type DT_STR is supported only for input columns and cast operations.  The expression “TRIM( [Some Column] ) == “” ? NULL( DT_STR, [length], 1252) : [Some Column]” has a DT_STR operand that is not an input column or the result of a cast, and cannot be used with the conditional operation.  To perform this operation, the operand needs to be explicitily cast with a cast operator.

After much messing around, I foud that if I cast the NULL statement as a DT_STR, the expression compiler was happy:

TRIM( [Some Column] ) == “” ? (DT_STR, 8, 1252)NULL(DT_STR, [length], 1252) : [Some Column]

Is this an expected behavior of Integraion Services?

I guess I would have expected that since I specified the type in the NULL statement that I would have to cast it as a DT_STR afterwords.

Any thoughts?

Mark

22 Responses to Return a NULL DT_STR in a conditional statement

  1. Jamez says:

    Thanks! this saved me. I could never figure out why conditional statements would not work, always getting “NULL” is not an input column.

  2. Joseph says:

    Thank you; this also saved me. I think this is poor SSIS design…

  3. Matrix says:

    Hey, it only took me about an hour of refining my search to find this golden nugget that saved me from having do use script components to do something so simple. I concur that having to cast a null that’s already been cast is redundant. If that’s the case, remove the need to specify the length and code page for the null itself.

  4. Jon G says:

    Thanks for the tip.

    I was having trouble processing a fix-width text file, always failing at Data Conversion. I narrowed it down to a Null vs. empty string problem, and after I put the condition in Derived Columns for all columns, the problem is gone.

  5. [...] to this blog entry for pointing me in the right [...]

  6. Alex O says:

    THANK YOU!!!!

  7. Peter Ng says:

    Thanks a million!

  8. :-) Spent an hour on this, but luckily you had blogged about it, and I found it using Google. On to the next error!

  9. Satosh says:

    You made my day

  10. Sunel says:

    Thank You.

  11. Russ says:

    This saved me too. But it is also weird since I don’t need to do the explicit type cast for other data types. I am able to use NULL(DT_I4) just fine without needing to cast it as DT_I4. For strings it seems weird and redundant, but it works, so thanks!

  12. mioux says:

    Wow, this is the solution :D

    Casting a NULL value… what was in your mind when you found this solution ? :D

  13. luke says:

    Thanks for this.
    The fact that SSIS needs you to do this to avoid an error is stunning.

  14. Naveen says:

    Hey thanks for the post. This really saved me lot of time.

  15. Abraham says:

    Great!!!!!! That is perfect

  16. Dietrich says:

    Many thanks! What crappy design! I’m gonna get some sleep now :)

  17. Mehul says:

    Thank you Friend !
    You have saved m day. Cheers.

  18. Kate says:

    Thanks! Yet another person you have saved a lot of time for.

  19. William Tang says:

    I have spent quite some time to figure out how to declare a null value in a SSIS expression. This approach made it work. Thank you.

  20. Mark says:

    Thanks a lot, you saved me an headache :)

  21. dbalevi says:

    Just wanted to echo everyone else and say thanks. This was annoying the hell out of me!

  22. kris says:

    excellente! saved my day…found this and solved my problem in 10 mins! Thanks for sharing!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.