C 引數化SQL語句中的like和in

2021-06-05 07:40:50 字數 1106 閱讀 2837

在寫專案的時候遇到乙個問題,sql 語句進行 like in 引數化,按照正常的方式是無法實現的

我們一般的思維是:

like 引數:

string strsql = "select * from person.address where city like '%@add%'";

sqlparameter parameters=new sqlparameter[1];

parameters[0] = new sqlparameter("@add", "bre");

in 引數

string strsql = "select * from person.address where addressid in (@add)";

sqlparameter parameters = new sqlparameter[1];

parameters[0] = new sqlparameter("@add", "343,372,11481,11533,11535,11755,11884,12092,12093,12143");

可是這樣放在程式裡面是無法執行的,即使不報錯,也是搜尋不出來結果的,

去網上搜尋也沒有乙個明確的答案,經過反覆試驗,終於解決這個問題

正確解法如下:

like 引數

string strsql = "select * from person.address where city like '%'+ @add + '%'";

sqlparameter parameters=new sqlparameter[1];

parameters[0] = new sqlparameter("@add", "bre");

in 引數

string strsql = "exec('select * from person.address where addressid in ('+@add+')')";

sqlparameter parameters = new sqlparameter[1];

parameters[0] = new sqlparameter("@add", "343,372,11481,11533,11535,11755,11884,12092,12093,12143");

sql語句中關於like的使用

今天在專案中有個新的需求 當我傳引數的時候,傳入的引數為空的時候,查詢所有資料。當傳入引數不為空的時候,按照輸入的引數查詢條件進行查詢。這個時候自己本來想著decode函式,後來經歷教使用like用法,模糊查詢 select b.select count 1 from options a where...

SQL語句like子句中的轉義符

如果想在sql like裡查詢有下劃線 或是 等值的記錄,直接寫成like xx 則會把 當成是like的萬用字元。sql裡提供了 escape子句來處理這種情況,escape可以指定like中使用的轉義符是什麼,而在轉義符後的字元將被當成原始字元,這和c裡的 很像,但是escape要求自定義乙個轉...

SQL語句like子句中的轉義符

如果想在sql like裡查詢有下劃線 或是 等值的記錄,直接寫成like xx 則會把 當成是like的萬用字元。sql裡提供了 escape子句來處理這種情況,escape可以指定like中使用的轉義符是什麼,而在轉義符後的字元將被當成原始字元,這和c裡的 很像,但是escape要求自定義乙個轉...