鑑於:T-SQL確定性INT鑄
- SQL服務器
- 表稱爲
TEST_TABLE
- 在
TEST_TABLE
列稱爲類型的TEST_FIELD
VARCHAR(50) NOT NULL
- 第1列:10YR3/6
- 行2 :10YR3/2
- 查詢:
SELECT TEST_FIELD FROM TEST_TABLE WHERE ...
問:
在我這裏條件,我需要在字符串的最後一個字符來測試值。我注意到在Where子句中執行以下操作的相同行爲。
RIGHT(TEST_FIELD,1) > 3
CAST(RIGHT(TEST_FIELD,1) AS INT) > 3
它們是否表現通過一些推斷投相同的情況下,1?案例1是確定性的嗎?
在此先感謝。
馬特
所以在我的情況下,我有幾個獨特的值本身。 10YR3/6。 10,3和6.不利用權利會混雜在一起不是嗎? 1036?或更糟10而不是3或6?對這種行爲不確定,所以我的問題仍在繼續。 – 2011-12-22 16:45:49
@MattAkers - 如果你可以解析值分別得到10,3和6,那麼你就沒事了。如果你不能,那麼你的文本與一個整數數據類型的比較將會拋出一個異常。你不能比較10YR3/6和100的值。它不知道如何執行這個操作,這與Right()甚至是Left()沒有任何關係,當比較的時候更多的是與轉換有關已經完成了。這有意義嗎? – JonH 2011-12-22 16:49:20
這很有道理。我完全同意你的例子和評論。我的問題更多地涉及比較轉換何時何地通過/失敗的原因是:爲什麼在第1條和第2條中執行相同的操作,並且如果1似乎在黑盒中執行了投射,我是否真的需要徹底投射它?並且在第1條中有確定性行爲嗎? – 2011-12-22 17:07:51