Just a quick update on this - I did manage to solve problem #2. I found that I can do this:
{STRING(GetColumn|1|1|,|{TASK(c52448b7-e110-445a-bfbe-b9c708e99362|StdOut)})}
So what I did is adjusted the output of my SQL task so that it doesn't include text qualifiers, because the GetColumn thing above doesn't seem to have an option to specify what the qualifier is, so it was still showing the quotes. Once I did that, I was able to reference each column separately, and my update query worked.
I'm still having trouble with problem #1 though. I don't want it to go ahead with the update SQL if it can't find a value to update it with. Did I do something wrong in the task flow?
Thanks.