為什麼SQL語句加 1 1

2021-09-07 06:30:32 字數 1142 閱讀 9590

是為了鏈結下面的查詢條件條件,也或者是替換沒有查詢條件的語句。

比如:要把檢索條件作為乙個引數傳遞給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生成,以工程名命名,由於預編...