Я сталкиваюсь с этим странным поведением (возможно, не странным, но за пределами моего понимания) при использовании isnull.Все это сводится к следующему:
isnull(left(cast(null as varchar),1),0)
дает 0
isnull(left(cast(null as varchar),1),-1)
дает *
Я хотел бы знать причину такого поведения.
Хотя я нашел обходной путь:
select isnull(cast(left(cast(null as varchar),1) as varchar),-1)