1

ある SQL テーブルから、この変換が必要な別のテーブルにデータをコピーする必要があります。次のことを試しました。

SELECT TOP 10 CAST(Per_ID as UniqueIdentifier FROM Test

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

どちらも私にこのエラーを与えます:

string文字からへの変換時に変換に失敗しましたuniqueidentifier

4

3 に答える 3

1

この変換用のユーザー定義関数を作成できます (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

于 2013-09-22T17:33:06.150 に答える
0

このスクリプトを使用して、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)
于 2013-09-22T18:21:46.283 に答える