我需要将数据从一个 SQL 表复制到另一个需要此转换的表,我尝试了以下操作:
SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test
SELECT TOP 10 CONVERT(UniqueIdentifier,Per_ID,100) FROM Test
两者都给了我这个错误:
string
从字符转换为 时转换失败uniqueidentifier
。
我需要将数据从一个 SQL 表复制到另一个需要此转换的表,我尝试了以下操作:
SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test
SELECT TOP 10 CONVERT(UniqueIdentifier,Per_ID,100) FROM Test
两者都给了我这个错误:
string
从字符转换为 时转换失败uniqueidentifier
。
您可以为此转换创建一个用户定义的函数(假设正在使用 MS SQL Server):
IF OBJECT_ID (N'dbo.NvarcharToUniqueidentifier', N'FN') IS NOT NULL
DROP FUNCTION dbo.NvarcharToUniqueidentifier;
GO
CREATE FUNCTION dbo.NvarcharToUniqueidentifier (@id nvarchar(100))
RETURNS UNIQUEIDENTIFIER
WITH EXECUTE AS CALLER
AS
BEGIN
RETURN CAST(LEFT(@id, 8)
+ '-' +RIGHT(LEFT(@id, 12), 4)
+ '-' +RIGHT(LEFT(@id, 16), 4)
+ '-' +RIGHT(LEFT(@id, 20), 4)
+ '-' +RIGHT(@id, 12)
AS UNIQUEIDENTIFIER);
END
GO
您可以如下调用此函数:
select dbo.NvarcharToUniqueidentifier('1915DE0055FA11D6A6E40008C7D0BAB1')
输出是:1915DE00-55FA-11D6-A6E4-0008C7D0BAB1
Uniqueindentifier 只能包含 HEX 值,表示 AF 和 0-9。
您可以使用此脚本将 varchar 转换为 GUID
DECLARE @uuid VARCHAR(50)
SET @uuid = '1915DE0055FA11D6A6E40008C7D0BAB1'
SELECT CAST(
SUBSTRING(@uuid, 1, 8) + '-' + SUBSTRING(@uuid, 9, 4) + '-' + SUBSTRING(@uuid, 13, 4) + '-' +
SUBSTRING(@uuid, 17, 4) + '-' + SUBSTRING(@uuid, 21, 12)
AS UNIQUEIDENTIFIER)