2011-09-30 79 views
7

正如標題所示: 有沒有辦法在SQL Server中關閉隱式類型轉換?有沒有辦法在SQL Server中關閉隱式類型轉換?

我想下面這個簡單的SQL生成錯誤

SELECT 'a' WHERE 1='1' 
+0

好問題,除了:爲什麼它很重要?經過十秒鐘的思考,我想不出一個例子,我會_accidentally_比較兩種不同的類型,但如果我將_deliberately_比較兩種不同的類型,那麼我想轉換... – nnnnnn

+1

我認爲這很重要的原因。除此之外,您還可以命名爲:意外比較。我認爲在給定字段的表中有一個用戶定義的類型可能是一個鍵,並且在另一個表中有一個外鍵是很好的。我認爲默認值應該是比較兩個值的時候 - 如果類型類型不同:失敗。 – Yodiz

+1

這是Chris Date給他的朋友E. F. Codd提供的標準SQL的特性,「有時用戶知道的不僅僅是DBMS」。但日期認爲這是一個誤判:谷歌確切的短語'[「科德風格的域名檢查」](http://www.google.co.uk/search?q=%22Codd-style+domain+checks% 22)瞭解更多細節。 – onedaywhen

回答

10

無法禁用它。

已要求,但:看到它來自Erland Sommarskog

但是所提出的SET OPTION STRICT ON MS連接請求時,它是完全可預測的根據datatype precedence規則

你的外鍵的例子很有趣,因爲實際FOREIGN KEY約束需要相同的數據類型,長度和排序規則。

0

有沒有方法來禁用SQL Server中的隱式轉換,儘管一些搜索會顯示它是東西多的人要求。

相關問題