(相關(guān)資料圖)
這里@userIds 如果 寫成101,202,301翻譯后的sql的where部分會(huì)是:where userId in("101,202,301");而不是期待的:where userId in(101,202,301);前者前后多了引號(hào)。在我使用ef.core連接mysql查詢時(shí),我這樣寫,就出現(xiàn)查出來的數(shù)據(jù)比sql腳本查出來的數(shù)據(jù)要少幾條的情況。所以這樣寫,可能可以查出來數(shù)據(jù),但數(shù)據(jù)可能不會(huì)完整,而且還會(huì)是錯(cuò)誤的數(shù)據(jù)。所以以后不要這樣寫了。我想起,我們?cè)谄唇訁?shù)化時(shí),可以這樣寫,比如 userCode=@search,而不是這樣寫:userCode="@search";這種在參數(shù)化上加了引號(hào)的反而還要出錯(cuò)。在前面最開始,即使我們以為他是數(shù)字, 但101,202...這樣拼接就是字符串了,指定的paramter或者默認(rèn)就是為varchar等字符類型就會(huì)在參數(shù)前后自動(dòng)加引號(hào)的。根據(jù)數(shù)據(jù)值值推斷的默認(rèn)sqlType類型。省事的解決辦法是,直接不在in后面使用用參數(shù)化,直接把值拼接到sql中去,比如 where userId in ({userIds});userids就等于“101,202,303”非要使用參數(shù)化,就一個(gè)值一個(gè)參數(shù)的拼接。@userId1 101 int類型@userId2 202 int類型@userId3 303 int類型sql寫法就是:where userId in(@userId1,@userId2,@userId3);參數(shù)化的值多了,網(wǎng)上說超過2000個(gè),就不得行了。也沒試過。但如果值很多,就不用in好點(diǎn)吧。標(biāo)簽: