2016-11-21 2 views
1

ここまで私が持っていたDDLがあります。しかし、今私は大文字のasciiを格納する必要があるデータをテーブルに書き込んだ後で実現します。テーブルを削除して再作成せずに、最初の文字の大文字の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)) 
); 

誰かが私を伝えることができ、それが可能私は大文字[English]列のASCII値を格納するEnglishAscii列を変更するためのものであり、私はそれをドロップして再作成しなくても、テーブルに変更を加えることができるだろう?

+1

ストアドプロシージャやアプリで変換を行ってみませんか?それを2度保管するのは意味がありません。 – under

答えて

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) 
); 

を試してみてください見つけます

ALTER TABLE dbo.Phrase 
DROP COLUMN EnglishAscii 

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

しかし、彼は全文ではなく最初の文字だけを大文字にするように求めています – mohan111

+0

@ mohan111 - Prdpは正しいです。これにより、最初の文字の大文字が得られます。 – Alan2

+0

@Prdp - これをオンザフライ変更/既存のテーブルへの更新として行うことはできますか?もしそうなら、どうすればその列を変更できますか? – Alan2

関連する問題