/ / NVARCHAR TO UNIQUEIDENTIFIER Преобразуване [дубликат] - sql, sql-сървър, леене

NVARCHAR да UNIQUEIDENTIFIER Конверсия [дубликат] - sql, sql-сървър, леене

Трябва да копирам данни от една таблица SQL в друга таблица, където имам нужда от това преобразуване, Опитах следното:

SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test

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

И двете ми дават тази грешка:

Преобразуването не бе успешно при конвертиране от символ string да се uniqueidentifier.

Отговори:

0 за отговор № 1

Уникалният идентификатор може да съдържа само HEX стойности, това означава A-F и 0-9.


0 за отговор № 2

Можете да създадете определена от потребителя функция за това преобразуване (при условие че се използва 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


0 за отговор № 3

можете да използвате този скрипт за преобразуване на 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)