在下面的情況下,Combine視圖中的最終選擇失敗,有什麼想法爲什麼?爲什麼sql select語句失敗?
子集表沒有對應於MasterCodes中不會轉換爲整數值的行。
CREATE TABLE MasterCodes (
ID INT
, Code VARCHAR(10))
GO
CREATE TABLE Subset (
ID INT)
GO
CREATE VIEW Combine AS
SELECT S.ID
, M.Code
, CAST(M.Code AS INT) IntCode
FROM Subset S
INNER JOIN MasterCodes M ON M.ID = S.ID
GO
INSERT MasterCodes (ID, Code) VALUES (1, '1')
INSERT MasterCodes (ID, Code) VALUES (2, '2')
INSERT MasterCodes (ID, Code) VALUES (3, 'three')
INSERT MasterCodes (ID, Code) VALUES (4, '4')
INSERT Subset (ID) VALUES (1)
INSERT Subset (ID) VALUES (2)
INSERT Subset (ID) VALUES (4)
SELECT * FROM Combine -- 3 rows returned
SELECT * FROM Combine WHERE Code = '2' -- 1 row returned
SELECT * FROM Combine WHERE Code = '3' -- 0 rows returned
SELECT * FROM Combine WHERE IntCode = 2 -- fails, error msg is
Msg 245, Level 16, State 1, Line 15
Conversion failed when converting the varchar value 'three' to data type int.
環境是Sql2k5標準(64位)ON WIN2K3服務器R2
有點格式化會讓你更多的迴應。 – pugmarx 2009-06-26 21:54:43