如何将 nvarchar 转换为 uniqueidentifier?

How do I convert a nvarchar to a uniqueidentifer?

我有一个 table (RPT.table1),其中包含从 ArcGIS Online 应用程序导出的数据。 table (GlobalID) 中的一列导出为 nvarchar(255) 数据类型。在将此数据插入另一个 table (CFAdmin.table2) 之前,我需要将此列转换为 uniqueidentifier 数据类型。

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, Level 16, State 2, Line 1
Conversion failed when converting from a character string to uniqueidentifier.

我对 SQL 服务器比较陌生,我猜想有一个非常简单的解决方案。

感谢阅读。

很可能您的数据有问题,而不是您的 code/syntax。源 table 中可能存在作为唯一标识符无效的值。我会通过查看源 table 中的数据并尝试查找会导致错误的值来进行调查。看看这个查询是什么returns:

Select GlobalID from RPT.table1 WHERE GlobalID NOT LIKE '________-____-____-____-____________'

(那些下划线模糊在一起,所以为了明确:8个下划线,破折号,4个下划线,破折号,4个下划线,破折号,4个下划线,破折号,12个下划线)

也许检查

Select GlobalID from RPT.table1 WHERE GlobalID IS NULL