在我的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. 轉換觀察到在Firebase中觀察SingleSvent時出錯
- 4. SQL Server 2000中的Implode類型函數?
- 5. 轉換的SQL Server 2000至2005
- 6. 隱式轉換泛型類
- 7. 隱式類型轉換?
- 8. 隱式類型轉換
- 9. 隱式轉換類型'int?'到 '廉政'
- 10. 有沒有辦法在SQL Server中關閉隱式類型轉換?
- 11. 反射中的隱式類型轉換
- 12. 可觀察 - 將2個承諾轉換爲可觀察到的
- 13. 值類類型的隱式轉換?
- 14. 將SQL Server 2008轉換爲2000
- 15. 在SQL Server 2000中
- 16. C#:不能隱式轉換類型
- 17. SQL Server隱式類型轉換在這種情況下如何工作?
- 18. SQL Server 2000在將nvarchar轉換爲datetime時遇到問題
- 19. 泛型:類型不能隱式轉換
- 20. 在SQL Server 2000
- 21. SQLCMD到SQL Server 2000中
- 22. 在SQL Server 2005/2000中的行列轉換
- 23. SQL Server 2000連接字符串轉換爲SQL Server 2008
- 24. 隱式轉換SQL
- 25. 的std ::函數隱式類型轉換
- 26. 向數組的隱式類型轉換
- 27. 無法隱式轉換類型「匿名類型#1 []」到「INT []」
- 28. 轉換可觀察到陣角4 HTTP
- 29. 在Scala中隱式轉換泛型和非泛型子類型
- 30. 轉換變量類型後,所有觀察值都下降SAS
你是如何得到這個長度值的? – 2010-12-03 06:25:22