我在某些程序員看到使用1 = 0的地方選擇查詢的條件,他們爲什麼使用這個條件。爲什麼我們在查詢中給出sql 1 = 0
回答
唯一可能的用途是防止查詢返回任何行。我偶爾做過測試「沒有找到結果」的類型邏輯。
,您可以快速創建一個表的副本沒有這樣
select * into Newtable
from Oldtable
where 1 = 0
任何數據,這將創建一個新表具有相同的結構與舊錶
另一種選擇是返回一個空結果集
我已經看到一些實用程序使用該語法來收集有關表的元數據。他們可以運行諸如select * from sometable where 1=0
之類的查詢以「高效」地從表中獲取列而不用任何數據。
不適用於MySQL,我認爲。這就是'SHOW COLUMNS'的用途。 – ceejayoz 2010-12-18 17:12:54
@ceejayoz:謝謝你的信息。我不知道關於MySQL;我假設(顯然不正確)它會返回一個空的結果集,它仍然會有列。它在其他SQL實現中起作用(至少有一些)。 – 2010-12-18 22:20:15
我在基於複選框值列表生成SQL時在代碼中使用了這個。例如,如果我允許用戶從水果中進行選擇:
蘋果 橙子 梨
...他們選擇蘋果和橘子,我的僞代碼如下所示:
string sqlWhere = "select * from fruit where 1 = 0"
if (FruitList.Any()) {
sqlWhere += " or code in ("
foreach (Fruit in FruitList)
sqlWhere += string.Format("'{0}',");
/*Add the close parens*/
sqlWhere = sqlWhere.Substring(0,sqlWhere.Length-2) + ")";
}
這將只返回用戶選擇的值。如果他們不選擇任何水果,則不會返回任何結果。
*請注意此代碼並未考慮SQL注入。爲什麼您可能會看到
where 1 = 0
我認爲你的AND需要成爲一個OR。 – ceejayoz 2010-12-18 17:12:19
你說得對。更新。 – 2011-01-03 20:25:36
你可以使用這樣的查詢作爲一個「平」來檢查,如果你的數據庫連接仍然是開放的,並且數據庫是健康等只是一個例子 - 如果你沒有結果,但是,如果你遇到某種錯誤,就會出現問題。你會針對某種系統表編寫查詢。根據你的數據庫,你可能會做一些簡單的事情 - 在PostgreSQL中,你可以說select 1;
,在Oracle中,我見過select 1 from dual;
。如果你的數據庫沒有能力處理選擇中的自由浮動表達式,並且沒有雙重對等表達式,那麼你可以執行一些類似於select * from sometable where 0 = 1;
的操作。
- 1. 爲什麼我們在SQL中使用1 = 1 select Query
- 2. 爲什麼我在Rails中搜索查詢時出現「錯誤的參數數量(給定1,預期爲0)」?
- 3. 爲什麼在php中給出0?
- 4. 爲什麼1/0給出錯誤,但1/0.0返回「Inf」?
- 5. 爲什麼我們在SQL
- 6. MySQL SQL查詢0或1
- 7. 爲什麼R中的NA^0給出1而不是NA
- 8. 爲什麼我們應該避免1 + N查詢問題?
- 9. 爲什麼trunc(1)輸出爲0?
- 10. 爲什麼SQL查詢返回0?什麼將是實際的查詢?
- 11. 爲什麼此SQL查詢會給出語法錯誤?
- 12. SQL Server - 爲什麼calc給0?
- 13. 爲什麼我在view.py中的查詢給我一個TypeError?
- 14. 爲什麼mySQL在我的LIKE查詢中返回0結果?
- 15. 爲什麼在PHP中按位〜0 = -1?
- 16. 在csh中,爲什麼4 - 3 + 1 == 0?
- 17. MySQL:爲什麼在這個查詢中「1 + 1」被當作「1」?
- 18. 爲什麼查詢結果給予而destCurrency不爲0 -
- 19. 爲什麼0 && 1是1,而1 && 0在紅寶石中是0?
- 20. SQL查詢產生重複行,我看不出爲什麼
- 21. 他們在我的網站測試中發現了什麼「和1 = 0] | // * |/* [」0「)
- 22. 爲什麼我的SQL查詢失敗?
- 23. 爲什麼我的SQL查詢失敗?
- 24. 爲什麼一個sql查詢會有「where 1 = 1」
- 25. 爲什麼我的SQL查詢給1146錯誤尋找Database.Database?
- 26. 分區給出0循環,爲什麼?
- 27. 爲什麼我們應該在asp.net中的sql查詢之前編寫@?
- 28. 爲什麼〜0是-1?
- 29. 爲什麼0 + 1 == 49?
- 30. 爲什麼總是給輸出0 0 0?
更簡單,效果相同: 'select * into Oldtable from Oldtable where 0' – Jpsy 2012-10-26 10:27:03