動態sql XML 的foreach迴圈

2021-10-02 18:32:58 字數 975 閱讀 2469

foreach在xml動態sql總用於陣列集合等引數的接收

collection:傳遞過來的陣列或集合等引數名稱(collection="引數名")

index:通過下標0,1,2來迴圈取出每個元素(index="index")

item:每迴圈一次所取出的引數 取別名,這個可以隨便填,與#表示式中的引數對應(item="items")

separator:每次取出的引數以某種符號分割,例如逗號、空格等(separator="",separator=",")

open:以什麼開始

close:以什麼結束

or content = #

這是最基本的用法,但是會出現乙個無問題,就是前面需要乙個and,不需要or 因為每次虛幻都會加乙個or,所以我們需要將第乙個or去掉。

所以,也就用到了trim標籤,trim標籤總共有四個屬性

prefix:增加字首

suffix:增加字尾

prefixoverrides:去掉字首

suffixoverrides:去掉字尾

那麼經過修改,**變成了:

or content = #

這樣,字首的or就去掉了,很多時候,foreach都是和trim標籤搭配來用

我原本以為,這樣就完了,但是還有乙個坑等著我

那就是,這樣的sql,前面肯定有乙個and,這個要怎麼加呢,首先肯定不能用trim加,因為會迴圈出現兩次。而且兩個or語句還需要加上口號,這又怎麼修改呢

直接上**

and(

or content = #

)

可能有人會說,直接用open("and ("),close(")")不就好了嗎,問題是,這兩個屬性和trim是衝突的

這樣,就完美的解決了之前的問題,雖然現在想想很簡單,但是當時用了一些時間才解決。

SQL XML的查詢操作

查詢xml節點 value 通過nodes 指定到節點通過value屬性取出值 declare xml xmlset xml 12 select id.value nvarchar 500 as employeeid from xml nodes employee id employee id 查詢...

mybatis sql語句中的foreach標籤

mybaits sql中不能直接用in只能用foreach替代 網上有很多關於foreach的例子,就像這樣 不知道是我用的不對還是怎麼著,這樣是就是報錯,原因也很簡單只要將 改成 就可以使用了。還有人說用這個 可以直接使用in,不懂也沒弄出來。collection listtag 要迴圈的集合 i...

動態語言的動態型別

1.在靜態語言中,宣告的目的是為了告訴編譯器所使用的變數 是什麼 使型別檢查可以在編譯階段靜態地進行,儘量減少執行時的型別檢查,提高執行效率,但缺乏靈活性。2.而在動態語言中,變數被設計成無型別的,變數的型別可以按需改變,同乙個變數既可作為整型的,也可作為字串,還可用來定義函式。那麼如何保證所執行的...