/ Conversão / NVARCHAR para UNIQUEIDENTIFIER [duplicado] - sql, sql-server, conversão

NVARCHAR PARA UNIQUEIDENTIFICADOR Conversão [duplicado] - sql, sql-server, casting

Preciso copiar dados de uma tabela SQL para outra tabela em que preciso dessa conversão, Eu tentei o seguinte:

SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test

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

Ambos me dando este erro:

Falha na conversão ao converter de um caractere string para uniqueidentifier.

Respostas:

0 para resposta № 1

O identificador exclusivo pode conter apenas valores HEX, significa A-F e 0-9.


0 para resposta № 2

Você pode criar uma função definida pelo usuário para esta conversão (supondo que o MS SQL Server esteja sendo usado):

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

E você pode chamar esta função como abaixo:

select dbo.NvarcharToUniqueidentifier("1915DE0055FA11D6A6E40008C7D0BAB1")

A saída é: 1915DE00-55FA-11D6-A6E4-0008C7D0BAB1


0 para resposta № 3

você pode usar esse script para converter varchar em 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)