0
注:SQLシートからデータをインポートしています。この後、私はテーブルにデータを挿入したいが、同じContractNo(契約番号)を見つけるとデータを更新し、別のContractNo(契約番号)を見つけると新しいレコードとして挿入するSQLでwhere句でマージクエリを更新する
しかし、クエリがwhereステートメントで動作していません。
string mergeSql = "merge into " + tableName + " as Target " +
"using Ro_Consumers_Temp as Source " +
"on " +
"Target.ContractNo=Source.ContractNo " +
"when not matched then " +
"insert values (Source.Ronumber,Source.ContractNo,Source.BusinessPartner,Source.ContractAccount,Source.IBC,Source.Portion,Source.MRU,Source.Installation,Source.MeterNo,Source.LegacyNumber,Source.ConsumerNo,Source.ConsumerName,Source.Address,Source.Tariff,Source.ROAgent,Source.IBCName,Source.CD,Source.Batch,Source.JasbNumber,Source.SheetNo, Source.ContactName,Source.ContactNumber,Source.FOName,Source.[Address&LandMark],Source.NatureOfBusiness)" +
"when matched then update set Batch = Source.Batch, JasbNumber = Source.JasbNumber Where Target.Batch=Source.Batch;";
句を 'when'に追加することができます。' '一致していない場合やTarget.Batch = Source.Batch''のように、更新に' where'を追加するのではなく、 https://msdn.microsoft.com/en-us/library/bb510625.aspx – juharr
これはSQLインジェクションを開く可能性が高いため、パラメータ化されたクエリをご利用ください。 – user2366842
QUOTENAMEにtableNameをラップすることにより、SQLインジェクションのリスクを最小限に抑えることができます。 –