SQL Server 中的短 guid/从字符串转换为唯一标识符

Tat*_*ana 3 sql-server guid

我需要创建一个包含简短指南的专栏。所以我发现了这样的事情:

alter table [dbo].[Table]
add InC UNIQUEIDENTIFIER not null default LEFT(NEWID(),6)
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

从字符串转换为 uniqueidentifier 时,转换失败。

我一直在努力

LEFT(CONVERT(varchar(36),NEWID()),6)
Run Code Online (Sandbox Code Playgroud)

CONVERT(UNIQUEIDENTIFIER,LEFT(CONVERT(varchar(36),NEWID()),6))
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误。

dot*_*tom 5

不存在“简短指南”之类的东西。Guid,oruniqueidentifier是一个 16 字节的数据类型。您可以在 MSDN 中阅读相关内容。这意味着长度必须始终为 16 个字节,并且您不能像您尝试的那样使用 6 个字符。

在同一篇 MSDN 文章中,您可以找到如何初始化此类型的描述:

uniqueidentifier 数据类型的列或局部变量可以通过以下方式初始化为值:

  • 通过使用NEWID函数。
  • 通过从 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的字符串常量进行转换,其中每个 x 是
    0-9 或 af 范围内的十六进制数字。例如,
    6F9619FF-8B86-D011-B42D-00C04FC964FF 是有效的唯一标识符
    值。

在您的情况下,您尝试仅转换 6 个字符,但uniqueidentifier显然失败了。

如果您只想使用 6 个字符,只需使用varchar(6)

alter table [dbo].[Table]
add InC varchar(6) not null default LEFT(NEWID(),6)
Run Code Online (Sandbox Code Playgroud)

请记住,在这种情况下,不能保证该指南是唯一的。