очень простое добавление столбцов - PullRequest
0 голосов
/ 22 августа 2011

У меня сложилось впечатление, что SQL Server позволит мне выполнять добавление, например

SELECT     val01, val02, val03 = (val01 + val02)
FROM       Table_1

, так что val03 - это добавление двух предыдущих столбцов. Однако в этом случае я буквально вижу значение 1 рядом со значением 2. Можете ли вы показать мне, где я иду не так?

Ответы [ 3 ]

3 голосов
/ 22 августа 2011

Оператор + может использоваться в SQL Server двумя способами:

  • Для чисел (int, bigint, decimal и т. Д.) Это ADDITION оператор.
  • Для строк (varchar, nvarchar, char и т. Д.) Это оператор CONCATENATION .

Если у вас есть числовые данные в поле типа данных строки, вы увидите второе значение, добавленное к первому.

Решением может быть:

  • Используйте правильные типы данных .Если это число, тип данных должен быть числовым.
  • CAST к правильному типу данных - то есть val03 = (CAST(val01 as int) + CAST(val02 as INT))
1 голос
/ 22 августа 2011

Итак, val03 - это объединение val01 и val02 в вашем списке результатов? Как:

VAL01  VAL02  VAL03
    1      2   1  2
    4      5   4  5

В этом случае либо Val01, либо Val02 являются нечисловыми столбцами или, может быть, и тем, и другим. В ролях:

SELECT val01, val02, val03 = (cast(val01 as float) + cast(val02 as float)) FROM Table_1

Или, в качестве альтернативы, исправьте типы столбцов.

0 голосов
/ 22 августа 2011

Если ваши столбцы val01 и val02 являются символами или varchar, но содержат числа, числа будут объединены в приведенном выше синтаксисе.

Если вы хотите, чтобы они отображались в виде чисел, вам нужно будет использовать CAST или CONVERT в полях val01 или val02, чтобы добавить их в виде числовых значений.

Пример:

ВЫБРАТЬ val01, val02, val03 ОТ таблицы_1 WHERE CAST (val03 как INT) = ((CAST val01 как INT) + (CAST val02 как INT))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...