Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我是否可以将列更改为第一个字符的大写ascii值,而不必删除并重新创建表?_Sql Server - Fatal编程技术网

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

Sql server 我是否可以将列更改为第一个字符的大写ascii值,而不必删除并重新创建表?,sql-server,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 CLUSTER

这是我到目前为止的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
列以存储大写
[英语]的ascii值
列,我是否能够在不必删除并重新创建它的情况下对表进行更改?

将英文列更改为
大写
并查找
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)
);
如果要更改现有的计算列,则必须删除该计算列并重新创建它

ALTER TABLE dbo.Phrase
DROP COLUMN EnglishAscii

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

为什么不在存储过程或应用程序中进行转换?存储两次是没有意义的,但他只要求大写字母,而不是整个字母word@mohan111-Prdp是正确的。这将只给出第一个的大写字母character@Prdp-我可以将此作为对现有表的动态更改/更新来执行吗。如果是这样的话,我怎么能改变这个列?@ MhanH111——即使现在我只考虑第一个字母,而我把样本数据插入到上面的表中。我得到的错误“列”EngasASCII“不能修改,因为它不是一个计算列,或者是一个联合运算符的结果”。