2014-11-16 28 views
1

以下兩個查詢有什麼區別?''sql在查詢中的含義

WHERE DeviceID = '1339750411' and DT.McId = '40' 

WHERE DeviceID = '1339750411' and DT.McId = 40 

上面的查詢限制返回相同的結果。

McId是我的SQL Server數據庫中的整數值。

感謝您的幫助。

回答

13

單引號(' ')表示字符串文字在T-SQL中。

第一WHERE子句'40',而是針對一個int柱(DT.McId)進行比較時,SQL Server將自動地將其轉換成int

選項#2更好:如果它是int列,與字符串進行比較沒有意義 - 它是int,因此請將其視爲int

選項#2不會招致的隱式轉換,因此在性能方面

更好
+0

只要是明確的,從一個字符串變量爲數字的單隱式轉換不會是一個大問題性能。隱式轉換通常是指必須轉換數據庫中的每個值以匹配變量的數據類型,這在這裏不會發生。 –

+0

@BrentOzar:同意 - 在這種情況下,它們很可能只是非常少的比較 - 但將'int'值與字符串文字進行比較只是一個總體上不好的想法。 –