我正在尝试使用这样的语句插入虚拟搜索数据(每个值的值不同):
insert into SEARCHRESULTEXTENSIONBASE
(CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID)
VALUES('9780347011266', '1317168818', '925e3a5e-e971-11e0-9425-00219b71cde3')
但是我收到了这个错误:
[SQL Server] Conversion failed when converting from a character string
to uniqueidentifier.
字段USAGEDATAIMORTID是一个uniqueidentifier字段,我在另一个成功接受数据的表中使用类似的语句:
INSERT INTO IMPORTUNIVERSITY
(USAGEDATAIMPORTID, PAGENUMBERS, PUBLISHERNAME, RECORDID, DEPARTMENTNAME)
VALUES('925e3a5e-e971-11e0-9425-00219b71cde3', '2',
'Nationwide News Pty Limited',
'74', 'Business');
我能看到的唯一区别是SEARCHRESULTEXTENSIONBASE
表USAGEDATAIMPORTID
是IMPORTUNIVERSITY
表的外键。
有什么想法吗?
修改
insert into SEARCHRESULTEXTENSIONBASE
(CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID)
VALUES('06463322521', '1317173481', convert(uniqueidentifier,'925e3a5e-e971-11e0-9425-00219b71cde3'))
给了我同样的错误。
答案 0 :(得分:0)
试试这个:
insert into SEARCHRESULTEXTENSIONBASE
(CAL_ISBN, CAL_SEARCHRESULTID, USAGEDATAIMPORTID)
VALUES('9780347011266', '1317168818',
convert(uniqueidentifier, 'b6c51461-e966-11e0-b87a-0219b71cde3'))
您需要将字符串转换为uniqueidentifier
数据类型。
答案 1 :(得分:0)
您使用的GUID中只有一个数字。可能是复制粘贴错误。
b6c51461-e966-11e0-b87a-0219b71cde3 - has 31 digits
F567D3BC-45E9-4891-A0FB-BDE143236867 - should have 32 digits (correct)
您可以将其测试为
SELECT Cast('b6c51461-e966-11e0-b87a-0219b71cde3' as UniqueIdentifier)
引发
Conversion failed when converting from a character string to uniqueidentifier.
,而
SELECT Cast('F567D3BC-45E9-4891-A0FB-BDE143236867' as UniqueIdentifier)
工作正常。
答案 2 :(得分:0)
看起来CAL_ISBN或CAL_SEARCHRESULTID是uniqueidentifier,您尝试插入字符串。您能否提供您要插入的表的架构定义并收到错误。
答案 3 :(得分:0)
问题是由于两个表中没有匹配的UUID,因此外键关系失败。如果错误消息没有那么误导,那么会更容易解决。
感谢您的帮助!