Если вы включаете столбец char, вы получите ошибку преобразования при попытке выполнить запрос, если в поле char нет чего-то, что можно преобразовать в число. Система сложит числа вместе, если они все числа. Он преобразует int в число с плавающей точкой. Вот некоторые тестовые данные:
/* Appending all three types together */
SELECT (int_field + char_field + float_field) AS NewField
FROM DataTypes
/* Results: Success only when the char can be converted to a number
Conversion failed when converting the varchar value 'test ' to data type int.
*/
/* Appending only numeric types (float and int) */
SELECT (int_field + float_field) AS NewField
FROM DataTypes
/* Results: Success */
/* Appending char and int types */
SELECT (char_field + int_field) AS NewField
FROM DataTypes
/* Results: Succes only when the char can be converted to a number
Conversion failed when converting the varchar value 'test ' to data type int. */
/* Appending char and nvarchar types */
SELECT (char_field + nvarchar_field) AS NewField
FROM DataTypes
/* Results: Success */
Обратите внимание, что в последней паре результатов, если есть только текстовые поля, они будут добавляться друг к другу. Однако, если присутствует хотя бы одно числовое поле, система пытается преобразовать их все в числовое, независимо от порядка. Всякий раз, когда используется оператор плюс, если хотя бы одно поле является числовым, система предполагает, что операция является дополнением, а не добавлением.
Это было проверено на SQL Server 2008.