我有一个表(RPT.table1
),其中包含从ArcGIS Online应用程序导出的数据。表(GlobalID)中的列之一已导出为nvarchar(255)
数据类型。我需要将此列转换为uniqueidentifier
数据类型,然后再将此数据插入另一个表(CFAdmin.table2
)。
GlobalID
列中的值曾经是唯一标识符,并且已经包含连字符(B4A6AA96-42DF-48D9-A3E0-4C7F88ED3E1D
)。
我尝试使用
ALTER TABLE RPT.table1
ALTER COLUMN GlobalID uniqueidentifier;
并且在INSERT INTO
语句中
INSERT INTO CFAdmin.table2 (GlobalID)
SELECT CAST(GlobalID AS uniqueidentifier)
FROM RPT.table1;
对于这两种方法,我都会遇到错误
Msg 8169,第16级,状态2,第1行从字符串转换为uniqueidentifier时转换失败。
我是SQL Server的新手,我猜有一个非常简单的解决方案。
感谢阅读。
可能是您的数据有问题,而不是您的代码/语法有问题。源表中可能存在作为唯一标识符无效的值。我将通过查看源表中的数据并尝试查找将导致错误的值来进行调查。查看此查询返回的内容:
Select GlobalID from RPT.table1 WHERE GlobalID NOT LIKE '________-____-____-____-____________'
((这些下划线一起模糊,因此为了明确起见:8个下划线,破折号,4个下划线,破折号,4个下划线,破折号,4个下划线,破折号,12个下划线)
也许检查
Select GlobalID from RPT.table1 WHERE GlobalID IS NULL