It is all about what should be done when an INCORRECT value is used in an expression. In this example, you are passing a value which is not a number, nor a string (strings should be placed within quotes). So SQL Server tries to be bit smart and consider it as a number and strips off the 'bad' part.
Considering that a developer is not supposed to write a query as above, I would say that the behaviour seems correct to me.
commented on Jun 25 2012 9:42PM