将uniqueidentifier类型转换为字符串

时间:2016-09-22 08:38:21

标签: sql sql-server tsql

在我的数据库SQL Express 2014中,

我的表名为Membership,其列名为UserId。列类型为uniqueidentifier

我想将UserId列的内容转换为字符串,为此我使用此行:

select convert(nvarchar(50), UserId) as UserId from Membership

但是在我执行上面的行之后,我仍然以uniqueidentifier格式获得了一组数字和字母。

更新

这里是UserId列中表格中数据的示例:

3CDDF65A-3F2B-48C9-814B-006AB2B70B5A

我需要把它投射到字符串。

知道我做错了什么?如何在字符串中转换并显示uniqueidentifier fomat?

3 个答案:

答案 0 :(得分:4)

这是NewID()GUID 与数据库中的唯一一样

如果您想要更易读的ID,您应该使用INT / BigInt作为主键(Identity(1,1)作为您的UserID

所有这些都返回完全相同的东西

DECLARE @User_ID UNIQUEIDENTIFIER = NEWID()
SELECT CAST(@User_ID AS NVARCHAR(50))
SELECT CONVERT(NVARCHAR(50),@User_ID)
SELECT @User_ID

unique_identifier就是一个唯一的标识符,而不是某种常见字符串或int的加密值

答案 1 :(得分:1)

我非常确定您的代码SELECT CONVERT(nvarchar(50), NEWID()) AS UserId实际上将uniqueidentifier转换为字符串。

如果您正在寻找其他答案,则应指定转换所需的结果。

答案 2 :(得分:0)

这是我要使用的SQL:

DECLARE @Value1 uniqueidentifier
PRINT 'Value1: ' + ISNULL(convert(nvarchar(100), @Value1), 'NULL')

DECLARE @Value2 uniqueidentifier
SET @Value2 = newid()
PRINT 'Value2: ' + ISNULL(convert(nvarchar(100), @Value2), 'NULL')

这确保如果值为NULL,显示,因此输出将为:

Value1: NULL
Value2: 9D630D0F-53B3-4A7B-93C2-E0B6F4C398F6

您可能会,也可能不会想要这个额外的功能。