我有下面的VB語句來插入文本數據到SQL 2008數據庫。如何在執行插入操作時檢查sFieldNameList列中是否存在sValueList?插入語句中的查詢?
sInsertStatement = "INSERT " & sTableName
& "(" & sFieldNameList & ") VALUES("
& Mid(sValueList , 3) & ")"
我有下面的VB語句來插入文本數據到SQL 2008數據庫。如何在執行插入操作時檢查sFieldNameList列中是否存在sValueList?插入語句中的查詢?
sInsertStatement = "INSERT " & sTableName
& "(" & sFieldNameList & ") VALUES("
& Mid(sValueList , 3) & ")"
我會如下做到這一點:
"IF NOT EXISTS (SELECT * FROM " & sTableName * "
WHERE " & sFieldNameList & " = " & sValueList & ")
BEGIN
"INSERT " & sTableName
& "(" & sFieldNameList & ") VALUES("
& Mid(sValueList , 3) & ")"
END
(這需要雖然能夠適應一個VBScript語法!)
我想我可能會失去一件事,也許我不應該這樣做,但已經有一段時間了。在if語句中,我是否像執行objConn.execute那樣執行? IF NOT EXISTS(objConn.execute「SELECT LN FROM」&sTableName *「WHERE LN =」&sValueList(0)&「) –
是的,沒錯,您可以將整個SQL語句作爲單個參數傳遞給objConn.execute 。 – Vikdor
你需要做的任何更新或插入?你需要的是一個UPSERT命令。基本上你需要一個WHERE子句,如:
where not exists (select 1 from mytable where col2='myId').
讀here的Postgres如何做到這一點。
SQL2008不具有相同的功能,但check this blog(頁面結束),他們這樣做:
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);
難道你是有問題的SQL或VBScript? – RedFilter