2012-02-12 15 views
1

文字列とレコードが挿入されたときに生成されるIDに基づいて計算するフィールドがあります。基本的には、レコードがID = 1で保存されている場合、計算されたフィールドで 'string_1'などを読み取る必要があります。私はこれが私の公式であることを試みている(('PV'+'_')+ID) PVは文字列で、IDは挿入されたデータと同じ行の主キーフィールドですが、私は数式エラーを受け取ります。私はIDの周りに引用符を追加する場合、私はちょうど間違っているPV_IDを取得します。どのように私の数式でIDフィールドを参照して値を取得することができますか? ここは私のテーブルの行構造(ID、Computedfield、data1、data2)です。 IDフィールドの値を文字列で連結するにはcomputedfieldが必要です。任意のヘルプは、SQL Server 2008 R2の標準主キーに基づく計算列の指定

+0

SQL Server 2008の標準 – MaxI

+0

PVは、文字列リテラル – MaxI

答えて

3

を使用して EDIT に感謝あなたの質問は、そのプレフィックス文字列は、文字列リテラル、または他の列の内容であるかどうかに完全に明確ではありません。

それはリテラルだ場合、あなたが言うことができる必要があります:それは別の列に含まれる文字列はなら

ALTER TABLE dbo.YourTable 
ADD ComputedColumn AS 'PV_' + CAST(ID AS VARCHAR(10)) PERSISTED 

、あなたがこの

ALTER TABLE dbo.YourTable 
ADD ComputedColumn AS PV + '_' + CAST(ID AS VARCHAR(10)) PERSISTED 

のようにそれを定義することができるはずですPVが接頭文字列を含む(タイプVARCHARの)列であると仮定します。

主なポイントは次のとおりです。あなたが文字列リテラル、およびINT値を混合しているので、あなたはそれらの2を連結することができるという前に、最初の文字列にCASTにINTを必要としています。

+1

感謝の男である最後にPERSISTEDを追加します。私は忘れていたか、むしろキャストを使用して文字の種類を指定する必要があることを知らなかった。 – MaxI

2

使用式:

('PV_'+CAST(ID as varchar)) 

あなたは結果の値を保持したい場合は -

+0

ありがとうございますが、marc_sさんが最初に回答しました – MaxI

関連する問題