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
parauniqueidentifier
.
Respostas:
0 para resposta № 1O 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)