我正在從三個字段中添加一個計算列。它將是一個VARCHAR字段。我需要指定計算列的最大長度。我們如何指定這一點。如何指定計算列的最大長度
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]
有沒有辦法限制它?我需要的,如果是超過10個字符長的
參考引發錯誤:Specify Computed Columns in a Table
我正在從三個字段中添加一個計算列。它將是一個VARCHAR字段。我需要指定計算列的最大長度。我們如何指定這一點。如何指定計算列的最大長度
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]
有沒有辦法限制它?我需要的,如果是超過10個字符長的
參考引發錯誤:Specify Computed Columns in a Table
單程
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] PERSISTED CHECK (LEN(CustomNumber) <= 10)
)
或者如果您不想保留計算列,只需添加一個重複表達式的檢查約束。
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ],
CHECK (LEN([PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]) <= 10)
)
假設,比如說,最大長度爲100,則:
ALTER TABLE [MyTable] ADD CustomNumber
AS Ltrim(Substring([PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] + Space(100), 1, 100))
這不會執行問題。 –
好點,@Martin史密斯。對不起,我錯過了錯誤提高部分。 – asantaballa
試試這個:
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50)
)
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] PERSISTED
GO
ALTER TABLE [MyTable]
ADD CONSTRAINT [MaxLenLimit] CHECK (LEN([CustomNumber]) <= 100)
「表'MyTable'中的計算列'CustomNumber'無法在'CHECK CONSTRAINT'中使用,因爲它未被保留。」 –
@馬丁 - 哦是的,你真的完全錯過了它。 – AnandPhadke
最大長度將自動從組件部分計算。你爲什麼要明確指定一個最大長度,如果長度超過這個長度會發生什麼? –
@MartinSmith有沒有辦法限制它?如果它超過10個字符,我需要提出錯誤 – Lijo