我是否可以将列更改为具有第一个字符的大写的ascii值,而不必删除并重新创建表?

时间:2016-11-21 05:47:43

标签: sql-server

这是我到目前为止的DDL。但现在我意识到在填充表格后需要存储大写字母ascii的数据。

CREATE TABLE [dbo].[Phrase] 
(
    [PhraseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    [English] NVARCHAR (MAX) NOT NULL,
    [EnglishAscii] AS (ascii([English])) PERSISTED,

    PRIMARY KEY CLUSTERED ([PhraseId] ASC))
);

有人可以告诉我,我是否可以更改EnglishAscii列以存储大写[English]列的ascii值,并且我可以更改表格而无需放下并重新创建它?

1 个答案:

答案 0 :(得分:3)

将英语列更改为UPPER个案,然后找到ASCII

试试这个

CREATE TABLE [dbo].[Phrase] (
    [PhraseId]     UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
    [English]      NVARCHAR (MAX)   NOT NULL,
    [EnglishAscii] AS  (ascii(UPPER([English]))) PERSISTED,
    PRIMARY KEY CLUSTERED ([PhraseId] ASC)
);

如果要更改现有的Computed列,则必须删除计算列并重新创建

ALTER TABLE dbo.Phrase
DROP COLUMN EnglishAscii

ALTER TABLE dbo.Phrase
ADD EnglishAscii AS (ascii(UPPER([English]))) PERSISTED