我如何将nvarchar转换为uniqueidentifer?

问题描述 投票:0回答:1

我有一个表(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的新手,我猜有一个非常简单的解决方案。

感谢阅读。

sql sql-server uniqueidentifier sqldatatypes nvarchar
1个回答
2
投票

可能是您的数据有问题,而不是您的代码/语法有问题。源表中可能存在作为唯一标识符无效的值。我将通过查看源表中的数据并尝试查找将导致错误的值来进行调查。查看此查询返回的内容:

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

((这些下划线一起模糊,因此为了明确起见:8个下划线,破折号,4个下划线,破折号,4个下划线,破折号,4个下划线,破折号,12个下划线)

也许检查

Select GlobalID from RPT.table1 WHERE GlobalID IS NULL
© www.soinside.com 2019 - 2024. All rights reserved.