0

SQL 2008 DB にテキスト データを挿入するための次の VB ステートメントがあります。挿入中に sValueList が sFieldNameList 列に既に存在するかどうかを確認するにはどうすればよいですか?

sInsertStatement = "INSERT " & sTableName 
                   & "(" & sFieldNameList & ") VALUES(" 
                   & Mid(sValueList , 3) & ")"
4

2 に答える 2

1

私はそれを次のようにします:

"IF NOT EXISTS (SELECT * FROM " & sTableName * " 
                WHERE " & sFieldNameList & " = " & sValueList & ") 
 BEGIN
    "INSERT " & sTableName 
              & "(" & sFieldNameList & ") VALUES(" 
              & Mid(sValueList , 3) & ")"  
 END

(ただし、これはVBScript構文に適合させる必要があります!)

于 2012-09-20T16:58:30.023 に答える
0

UPDATEまたはINSERTのいずれかを実行する必要がありますか?必要なのはUPSERTコマンドです。基本的に、次のようなWHERE句が必要です。

where not exists (select 1 from mytable where col2='myId').

postgresがそれをどのように行うかをここで読んでください。

sql2008には同じ機能はありませんが、次の機能があるこのブログ(ページの終わり)を確認してください。

USE [MyDatabase]
GO
merge into mytable as Target
using mytable2 as Source
on Target.id=Source.id
when matched then 
update set Target.name=Source.name,
Target.Salary = Source.Salary
when not matched then
insert (id,name,salary) values (Source.id,Source.name,Source.Salary);
于 2012-09-20T17:07:23.257 に答える