Sql 可以在表创建中使用强制转换和转换吗

Sql 可以在表创建中使用强制转换和转换吗,sql,Sql,我以前从未尝试过这种SQL查询,所以请原谅我提出这个问题。是否可以在表创建中使用强制转换和转换 create table Owner ( Id int identity(0,1) , Name nvarchar(200) , CountryId int , PolicyNumber AS (CONVERT(CountryId AS char(3)) + CONVERT(Id AS char(10)) varchar(40) ) go

我以前从未尝试过这种SQL查询,所以请原谅我提出这个问题。是否可以在表创建中使用强制转换和转换

   create table Owner
(
    Id      int identity(0,1) 
,   Name        nvarchar(200)
,   CountryId   int
,   PolicyNumber    AS (CONVERT(CountryId AS char(3)) + CONVERT(Id AS char(10)) varchar(40)
)
go
是的,它被称为,但你用错了:

create table Owner(
    Id          int identity(0,1) 
   ,Name        nvarchar(200)
   ,CountryId   int
   ,PolicyNumber AS (CAST(CountryId AS VARCHAR(10)) + CAST(Id AS VARCHAR(10)))
)
go

  • 不需要最终数据类型,因此删除
    varchar(40)
  • 。不要把它们混在一起
  • 如果使用SQL
    Server 2012+
    则使用简单的
    CONCAT
    : create table Owner( Id int identity(0,1) ,Name nvarchar(200) ,CountryId int ,PolicyNumber AS (CONCAT(CountryId, Id))); go 创建表所有者( Id整型标识(0,1) ,姓名nvarchar(200) ,CountryId int ,保单编号为(CONCAT(CountryId,Id)); 去
  • 你亦应:

    • 非空
      主键
      添加到
      Id
    • REFERENCES
      添加到
      CountryId
      中,并使其
      不为空
    • 将分隔符添加到两个数字之间的计算列,如
      -
      (参见演示)