如何将 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
我有一个 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