按字节将整数转换为GUID

时间:2019-02-04 16:09:42

标签: sql sql-server tsql

这是c#

    public static Guid ToGuid(long value)
    {
        var buffer = BitConverter.GetBytes(value);
        var inputBuffer = new byte[16];

        for (var i = 0; i < buffer.Length; i++)
        {
            inputBuffer[i] = buffer[i];
        }

        return new Guid(inputBuffer);
    }

反正有在TSQL中复制此功能吗?

1 个答案:

答案 0 :(得分:0)

等效代码为:

DECLARE @i INT=123456
SELECT CONVERT(UNIQUEIDENTIFIER,CONVERT(BINARY(4),REVERSE(CONVERT(CHAR(4),CONVERT(BINARY(4),@i)))))

这是另一个更简单的选项(但不会产生相同的结果):

DECLARE @i INT=123456
SELECT CONVERT(UNIQUEIDENTIFIER,CONVERT(BINARY(4),@i))

但是,正如其他人在评论中警告的那样,这两种方法均不能产生有效的GUID。根据{{​​3}}中的规定,有效的GUID必须具有一个版本和一个变体,并且没有版本0,变体0。