我需要创建一个包含简短指南的专栏。所以我发现了这样的事情:
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)
但我仍然遇到同样的错误。
不存在“简短指南”之类的东西。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)
请记住,在这种情况下,不能保证该指南是唯一的。
| 归档时间: |
|
| 查看次数: |
13365 次 |
| 最近记录: |