воскресенье, 2 февраля 2014 г.

int + varchar in SQL

Что будет если сложить число и строку в SQL?

SELECT 1 + 1 -- 2

Если складываем два числа, все очень просто, "+" означает сложение.

SELECT '1' + '1' -- 11 SELECT 'a' + 'a' -- aa

В данном случае оператор "+" применяется к строкам, это будет объединение строк (конкатенация).

SELECT 1 + '1' -- 2 SELECT '1' + 1 -- 2

В этом примере разные типы данных (int и varchar). Тип varchar имеет более низкий приоритет типов данных, поэтому он будет преобразован в int.

SELECT 1 + 'a' -- error SELECT 'a' + 1 -- error

И этом случае varchar преобразовывается в int, однако превратить строку 'a' в число нельзя, поэтому получаем ошибку: Conversion failed when converting the varchar value 'a' to data type int.