计算列应该是字符串

时间:2010-03-18 19:27:39

标签: sql sql-server-2005 string calculated-columns

这是我的数据库的快照。

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 个答案:

答案 0 :(得分:9)

您可能将计算列定义为col1+col2。请改为CAST(col1 AS NVARCHAR(MAX))+'-'+CAST(col2 AS NVARCHAR(MAX))

或者,如果您愿意,可以将NVARCHAR(MAX)替换为NVARCHAR(10)或您选择的其他长度。

答案 1 :(得分:2)

create table TableName
(
    col1 int,
    col2 int,
    ComputedColumn as Convert(varchar, col1) + '-' + Convert(varchar, col2)
)

请注意,如果任一值为null,那么ComputedColumn的结果也将为null(使用默认排序规则和设置)

答案 2 :(得分:0)

简单:

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

答案 3 :(得分:0)

SELECT col1, col2, (col1 + '-' + col2) as ComputedColumn

“+”既是加法又是串联字符。您可以显式转换,但在这种情况下,包括中间的“ - ”应该会导致隐式转换。

答案 4 :(得分:0)

首先在设计模式下创建表

将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)))

相关问题