Вычисляемый столбец должен привести к строке - PullRequest
6 голосов
/ 18 марта 2010

Вот снимок моей базы данных.

И col1, и col2 объявлены как int.

Мой ComputedColumn в настоящее время добавляет столбцы 1 и 2 следующим образом ...

col1  col2  ComputedColumn
1     2     3
4     1     5

Вместо этого мой ComputedColumn должен объединить столбцы 1 и 2 (включая символ '-' в середине) следующим образом ...

col1  col2  ComputedColumn
1     2     1-2
4     1     4-1

Итак, каков правильный синтаксис?

Ответы [ 5 ]

9 голосов
/ 18 марта 2010

Вы, вероятно, определяете свой вычисляемый столбец как col1+col2. Попробуйте CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX)) вместо.

Или, если хотите, вы можете заменить NVARCHAR(MAX) на NVARCHAR(10) или другую длину по вашему выбору.

2 голосов
/ 18 марта 2010
create table TableName
(
    col1 int,
    col2 int,
    ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)

Имейте в виду, что если любое из значений равно null, то результат ComputedColumn также будет равен null (с использованием параметров сортировки и настроек по умолчанию)

0 голосов
/ 23 апреля 2015

сначала создать таблицу в режиме конструктора

добавить 2 столбца как col1 и col2

добавить еще один столбец computedcolumn и установить свойство вычисляемого столбца

enter image description here

Также вы можете использовать следующий скрипт

CREATE TABLE [dbo].[tbl](
[col1] [varchar](50) NOT NULL,
[col2] [varchar](50) NOT NULL,
[ComputedColumn]  AS ((CONVERT([varchar],[col1],(0))+'-')+CONVERT([varchar],[col2],(0)))

)

0 голосов
/ 18 марта 2010
SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn

"+" является как символом сложения, так и символом конкатенации. Вы можете явно конвертировать, но в этом случае включение «-» в середине должно вызвать неявное преобразование.

0 голосов
/ 18 марта 2010

простой:

SELECT ComputedColumn = convert(varchar, col1) + '-' + convert(varchar, col2)
  FROM Table
...