在我的数据库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?
答案 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
您可能会,也可能不会想要这个额外的功能。