On SQL Server this:
select ISNULL(CAST(NULL AS varchar(10)) + '3', '34') as c
evaluates to:
34
The same is true using from freetds via tsql
1> select ISNULL(CAST(NULL AS varchar(10)) + '3', '34') as c
2> go
c
34
but not via tiny_tds
irb(main):019:0> r= client.execute("select ISNULL(CAST(NULL AS varchar(10)) + '3', '34') as c")
=> #<TinyTds::Result:0x9dd026c>
irb(main):020:0> r.each
=> [{"c"=>"3"}]