我有此查询,我需要将Pubname,ISBNname,copysname和createdname保存为Integers
DECLARE @a Table(bkID INT, bkname varchar(100), bkpub INT, bkISBN INT, bkcopies INT, bkcreatedby INT)
INSERT INTO @a (bkID, bkname, bkpub, bkISBN, bkcopies, bkcreatedby)
SELECT A.nameID,
A.bkname,
CAST((B.Pubname) AS INT),
CAST((C.ISBNname) AS int),
CAST((D.copiesname) AS int),
CAST((F.createdname) AS int)
FROM @bkname AS A
LEFT JOIN @bkPub AS B
ON (A.nameID = PubID)
LEFT JOIN @bkISBN AS C
ON (A.nameID = C.ISBNID)
LEFT JOIN @bkcopies AS D
ON (A.nameID = D.copiesID)
LEFT JOIN @bkcraeted AS F
ON (A.nameID = F.craetedID)
它返回此错误:
消息245,级别16,状态1,过程LR_InsertBookArray,第46行 [Batch Start Line 2]转换varchar时转换失败 值“ 3”表示数据类型为int。
答案 0 :(得分:0)
称为/jars
的列实际上是伪装成整数的可能性很小。我的猜测是,您只需要引用表中的ID,但是您的问题没有足够的信息来知道这是否正确。
同时,您可以使用name
:
TRY_CAST()
如果无法转换值,它将返回 TRY_CAST(B.Pubname AS int),
TRY_CAST(C.ISBNname AS int),
TRY_CAST(D.copiesname AS int),
TRY_CAST(F.createdname AS int)
,但是可以避免错误。