標籤:ar 使用 sp on 問題 bs as sql 應用
在通常情況下iBATIS的參數在sqlmap中使用#param#的形式,參數名以’#’包著,但當使用sql的LIKE語句時就發生了問題,在單引號中無法使用#param#這種形式,下面列舉出了3種方法來實現:
當應用SELECT * FROM TABLE WHERE COL LIKE ’value%’時如果要把’value’以參數代替,可以把整個LIKE後面的字串全改為參數,即 SELECT * FROM TABLE WHERE COL LIKE #param#,此時參數param的值為字串"value%"。但有時上面這種情況會使程式變複雜,所以用參數只代替’value’時就要碰到在單引號內使用參數的問題。這時是使用’$’將參數名包起來,即SELECT * FROM TABLE WHERE COL LIKE ’$param$%’,此時參數param的值就是字串"value"。
在網上看到另一種方法,就是SELECT * FROM TABLE WHERE COL LIKE #param#||’%’。這個方法我試過了,是無效的的,mysql中"||"代表程式中的OR,無法正常運行。但是可以通過mysql的字串了串連函數:contat來實現,將字串串連起來,這樣就可以了,SELECT * FROM TABLE WHERE COL LIKE contat(#param#,’%’)
方法三:在通常情況下iBATIS的參數在sqlmap中使用#param#的形式,參數名以’#’包著,但當使用sql的LIKE語句時就發生了問題,在單引號中無法使用#param#這種形式當應用SELECT * FROM TABLE WHERE COL LIKE ’value%’時如果要把’value’以參數代替,可以把整個LIKE後面的字串全改為參數,即 SELECT * FROM TABLE WHERE COL LIKE #param#,此時參數param的值為字串"value%"。
ibatis SQLmap mysql模糊查詢字串拼的三種方法