是為了鏈結下面的查詢條件條件,也或者是替換沒有查詢條件的語句。
比如:要把檢索條件作為乙個引數傳遞給sql,那麼,當這個檢索語句不存在的話就可以給它賦值為1=1.這樣就避免了sql出錯,也就可以把加條件的sql和不加條件的sql合二為一。
這個就是為了方便sql條件的拼接,在「where」和「and」的地方方便處理(這裡以「and」關鍵字舉例)
假如有如下5列條件可以任意組合:
a='a'; b='b'; c='c'; d='d'; e='e'
第一種方案:
如果初始sql為: select * from t1
我們在生成最終的sql時就需要分情況判斷
1。乙個條件也不帶,sql保持不變
2。如果至少有乙個條件,我們就需要在sql後面加乙個「where」來連線條件
3。如果至少有二個條件,「where」後面的第乙個條件前面是不需要「and」的,因為5列條件可以任意組合,我們就需要判斷哪一列會是緊跟在「where」後面的,這時候又需要**來判斷
第二種方案:
如果初始sql是這樣:select * from t1 where 1=1
現在對於第一種方案裡面的任何一種情況,我們都只需要直接在sql後面加上「and + 對應的條件」就行了,不用另外寫**判斷
比如:sql = sql + ' and ' + a='a' ---> select * from t1 where 1=1 and a='a'
sql = sql + ' and ' + b='b' ---> select * from t1 where 1=1 and b='b'
sql = sql + ' and ' + c='c' + " and " + d='d' ---> select * from t1 where 1=1 and c='c' and d='d'
特別是當條件很多,程式中又能迴圈動態的新增條件的時候很方便
下面用偽**舉例:
sql = select * from t1 where 1=1;
for (int i = 0; i < column.count; i++)
最終生成的sql就類似如下的:
select * from t1 where 1=1 and a='a' and b='b' and c='c' and d='d' and e='e'
為什麼SQL語句加 1 1
是為了鏈結下面的查詢條件條件,也或者是替換沒有查詢條件的語句。比如 要把檢索條件作為乙個引數傳遞給sql,那麼,當這個檢索語句不存在的話就可以給它賦值為1 1.這樣就避免了sql出錯,也就可以把加條件的sql和不加條件的sql合二為一。這個就是為了方便sql條件的拼接,在 where 和 and 的...
為什麼SQl語句裡面要用where 1 1
sql查詢時通常會使用一下語句 select from finance.finance records l where l.status 1 limit 20 select from finance.finance records l where 1 1 and l.status 1 limit 2...
為什麼要加 include stdafx h
所謂標頭檔案預編譯,就是把乙個工程 project 中使用的一些mfc標準標頭檔案 如windows.h afxwin.h 預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。預編譯標頭檔案通過編譯stdafx.cpp生成,以工程名命名,由於預編...