首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NVARCHAR到UNIQUEIDENTIFIER转换

NVARCHAR到UNIQUEIDENTIFIER转换
EN

Stack Overflow用户
提问于 2013-09-22 16:33:40
回答 3查看 23.1K关注 0票数 1

我需要将数据从一个SQL表复制到需要此转换的另一个表中,我尝试了以下操作:

代码语言:javascript
复制
SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test

SELECT TOP 10 CONVERT(UniqueIdentifier,Per_ID,100) FROM Test

这两个错误都给了我这个错误:

从字符string转换到uniqueidentifier时,转换失败。

EN

回答 3

Stack Overflow用户

发布于 2013-09-22 17:33:06

您可以为此转换创建用户定义的函数(假设使用MS SQL Server ):

代码语言:javascript
复制
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

您可以按以下方式调用此函数:

代码语言:javascript
复制
select dbo.NvarcharToUniqueidentifier('1915DE0055FA11D6A6E40008C7D0BAB1')

输出是:1915DE00-55FA-11D6-A6E4-0008C7D0BAB1

票数 1
EN

Stack Overflow用户

发布于 2013-09-22 16:38:24

唯一标识符只能包含HEX值,它意味着and和0-9.

票数 0
EN

Stack Overflow用户

发布于 2013-09-22 18:21:46

可以使用此脚本将varchar转换为GUID。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18946112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档