在我的SQL Server 2K數據庫表中有一個varchar zipcode字段,它在遇到數字連字符的郵政編碼時恰好輸出不正確的郵政編碼字符長度。例如,對於像ABC12-1234這樣的值,它會發出正確的長度,即10,但是當郵政編碼像21345-5這樣的東西時,它的長度是5而不是7.我想知道如何避免這種隱含的不必要的類型轉換。有任何想法嗎?在SQL Server 2000中觀察到的隱式類型轉換
0
A
回答
0
我似乎無法重現這個 - 這個片段完美的作品SQL Server 2000上:
CREATE TABLE ZipCodeTest(ID INT IDENTITY PRIMARY KEY, ZipCode VARCHAR(20))
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('ABC12-1234')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('21345-5')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('ABC')
INSERT INTO dbo.ZipCodeTest(ZipCode) VALUES('32144')
然後我做一個SELECT該表:
SELECT
ID, ZipCode, LEN(ZipCode)
FROM
ZipCodeTest
,並獲得以下輸出:
ID ZipCode LEN
1 ABC12-1234 10
2 21345-5 7
3 ABC 3
4 32144 5
你 「的問題的情況下」(與ID = 2)示出了LEN(ZipCode) = 7
如預期。
,你能否告訴我們
- 你的表結構
- 返回錯誤的長度信息SELECT語句?
2
所以你的抱怨是,如果有人
INSERT INTO YourTable(ZipCode) VALUES(21345-5)
即它們忽略了報價,將得到視爲
INSERT INTO YourTable(ZipCode) VALUES(21340)
,你想這是避免和提高一個錯誤,因爲從int
到varchar
這種嚴格的行爲是不可能在任何版本的SQL Server呢。 Though it is a moderately highly voted request on the connect site.
必須在您的語言環境中的所有郵編包含-
字符?如果是這樣,你可以用檢查約束強制執行這個方面,否則你只需要在插入語句中小心。
無論如何,來自應用程序的任何插入都應該參數化爲正確的類型,所以我認爲這隻適用於手動插入語句?
相關問題
- 1. 可觀察到的轉換
- 2. 刪除SQL Server中的隱式轉換
- 3. SQL Server 2000中的Implode類型函數?
- 4. 轉換觀察到在Firebase中觀察SingleSvent時出錯
- 5. SQL Server:隱式數據類型轉換圖
- 6. 轉換的SQL Server 2000至2005
- 7. 隱式轉換類型
- 8. 隱式轉換泛型類
- 9. SQL Server的隱式轉換爲VARCHAR(MAX)
- 10. 隱式類型轉換?
- 11. 隱式類型轉換
- 12. 有沒有辦法在SQL Server中關閉隱式類型轉換?
- 13. C中的隱式類型轉換
- 14. 將SQL Server 2008轉換爲2000
- 15. 反射中的隱式類型轉換
- 16. 可觀察 - 將2個承諾轉換爲可觀察到的
- 17. 類型轉換問題在SQL Server 2014
- 18. 在SQL Server 2000中
- 19. 泛型類型的隱式轉換?
- 20. 值類類型的隱式轉換?
- 21. 明顯的類型轉換VS隱式類型轉換
- 22. SQL Server隱式轉換爲varchar vs bigint
- 23. SQL Server中從字符串到int的隱式數據轉換
- 24. Java中的觀察者模式 - 觀察者觀察不同的,不相關的類型或類?
- 25. 轉換ko.toJSON回觀察到的陣列
- 26. 在SQL Server 2000
- 27. C#:不能隱式轉換類型
- 28. SQL Server 2000在將nvarchar轉換爲datetime時遇到問題
- 29. SQL Server隱式類型轉換在這種情況下如何工作?
- 30. SQLCMD到SQL Server 2000中
你是如何得到這個長度值的? – 2010-12-03 06:25:22