蛙蛙推薦 使用XML欄位批量更新資料庫

2021-05-07 09:03:45 字數 1591 閱讀 9743

摘要:有時候我們想根據不同的where條件更新多條記錄,一般就需要用多條語句,本文教你怎樣用一次查詢完成,但xml處理會讓資料庫程序cpu公升高,請酌情使用。

--1、初始化臨時表及原始資料

ifobject_id('

tempdb..#t') 

isnot

null

drop

table

#tif

object_id('

tempdb..#t2') 

isnot

null

drop

table

#t2create

table

#t(k 

varchar

(100

),v 

int)

insert

into

#t values('

a',1

)insert

into

#t values('

b',2

)select

*from

#t--

輸出如下

--k    v

--a-1

--b-2

--2、準備批量更新的xml

declare

@atable

(data xml)

insert

@aselect'''

a''v=''3''

/>''b

''v=''4

''/>

'--3、將表變數a輸出到乙個臨時結果集,並用來和原始表#t join後更改原始表

--這裡用到了帶有from子句的update語句和cte型別

update

#t set

#t.v 

=d.v

from

#t inner

join

(select

b.id k,c.id v 

from@aa

cross

select

id =

t.x.value('@k

','varchar(100)') 

from

a.data.nodes(

'//i') 

ast(x)

) bcross

select

id =

t2.x.value('@v

','int') 

from

a.data.nodes(

'//i') 

ast2(x)

where

t2.x.value('@k

','varchar(100)') 

=b.id

) c) asd

on#t.k 

=d.k

--其中cte d的結果集應該如下

--k    v

--a-3

--b-4

--4、驗證原始表是否已經修改

select

*from

#t--

輸出如下

--k    v

--a-3

--b-4

蛙蛙推薦 把檔案轉換成xml

using system using system.drawing using system.collections using system.ponentmodel using system.windows.forms using system.io using system.xml namesp...

蛙蛙推薦 怎樣獲取乙個表中所有欄位的資訊

先建立乙個檢視 create view fielddesc asselect o.name as table name,c.name as field name,t.name as type,c.length as length,c.isnullable as isnullable,convert ...

蛙蛙推薦 遠端抓取網頁到本地資料庫 doc

接到乙個任務是把中國名牌 的某些內容新增到我們的 上,位址如下 技術,jscript 服務端指令碼,以及 ado技術,寫了乙個小程式,把這些內容抓取到了本地資料庫。抓取下來,然後就資料庫對資料庫導資料就比較方便了。先建立乙個 access 資料庫,結構如下 id自動編號 標識,主鍵 oldid 數字...