2012-03-21 11 views
2

私の行は特定の列にNVARCHAR値を持っています。この値に連結できるようにしたい、たとえば、行に "Hello"が格納されている場合、db.Executeコマンドを実行して "Hello"とタグを "my name is Earl"こんにちは、私の名前はアールです "と記されています。SQL Serverの連結のベストプラクティス?

これを実行するベストプラクティスは何ですか?

db.Execute("UPDATE table SET description = description + '[email protected] likes this' WHERE id = @1",user, id); 

これはパラメータを受け入れず、実際には@ 0と@ 1をデータベースに挿入します。どうしてこれなの ?

+0

データを照会するために連結を含むビューを使用できませんか?つまり、それを「純粋な」形式で保存し、より純粋でない形でそれを照会します。 – Reddog

+0

または、トリガを使用することができます - http://msdn.microsoft.com/en-us/library/ms175943.aspx – Reddog

+0

どのようなタイプのオブジェクトが 'db'ですか? 'Webmatrix.Data.Database'? –

答えて

3

だけの推測が、単一引用符の外に@0を移動してみてください:

db.Execute(@" 
    UPDATE table 
    SET description = description + @0 + ' likes this' 
    WHERE id = @1",user, id); 
+0

* Facepalm *。もちろん、これは修正されました!答えをありがとう。私の愚かさを守るために、それは朝2時だった! :) –

1

あなたがCONCATしたいと行IDが5であるというメッセージ列を持つ表MYTABLEを持っている場合は...

UPDATE myTable 
SET message = concat(message, N' my name is earl') 
WHERE id = 5; -- some where condition that identifies row(s) 
+0

Nは何のためにここにありますか?私は前にこの種の表記法を見たことがありません:) –

+4

'' N'string''は '' string''のvarcharとは対照的にnvarchar表現です – hkf

+0

これを試してみると、 '' concat ''が認識されませんしかし、上記のコードを試してみると、パラメータはクエリに渡されません。 –

関連する問題