2016-01-23 47 views
1

我從來沒有嘗試過這種SQL查詢,所以請問這個問題。是否有可能在表創建中使用CAST和CONVERT?CAST和CONVERT可以用於創建表格

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 

回答

1

是的,它被稱爲computed columns但是你用錯了:

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 

LiveDemo

  1. 沒有必要進行最後的數據類型,以便去除varchar(40)
  2. CAST(col AS datatype) or CONVERT(datatype, col, style)。不要混合它們。
  3. 如果使用SQL Server 2012+使用簡單CONCAT
     
    create table Owner(
        Id  int identity(0,1) 
        ,Name  nvarchar(200) 
        ,CountryId int 
        ,PolicyNumber AS (CONCAT(CountryId, Id))); 
    go 
    

您還應該:

  • 添加NOT NULLPRIMARY KEYId
  • 添加REFERENCESCountryId並使其NOT NULL
  • 將分隔符加到計算列上,如-之間的數字(見演示)
相關問題