为什么这个 SQL CAST 不起作用?

发布于 2024-08-25 04:23:20 字数 1513 浏览 7 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

话少情深 2024-09-01 04:23:20

如果在转换或转换过程中未指定 varchar/nvarchar 的大小,则默认为 30 个字符。将 guid 转换为字符串需要 36 个字符。这就是您收到错误的原因。

其中任何一个都可以工作:

Select Cast(NewId() as nvarchar(36)), CONVERT(nvarchar(36), NEWID())

When you do not specify the size of your varchar/nvarchar during a cast or convert, it defaults to 30 characters. You need 36 characters to convert a guid to a string. That is why you get the error.

Either of these will work:

Select Cast(NewId() as nvarchar(36)), CONVERT(nvarchar(36), NEWID())
司马昭之心 2024-09-01 04:23:20

这个测试脚本对我来说效果很好...我只能建议您的 TaskId 可能不是像您所说的 NVARCHAR(50) ?尝试 sp_columns 只是为了检查...

CREATE Table #TaskData (TaskId NVARCHAR(50))
INSERT INTO #TaskData (TaskId) SELECT CONVERT(NVARCHAR(50), NEWID())
UPDATE #TaskData SET TaskId = CONVERT(NVARCHAR(50), NEWID())
DROP TABLE #TaskData

This test script works fine for me... I can only suggest that maybe your TaskId isn't an NVARCHAR(50) like you say? Try an sp_columns just to check...

CREATE Table #TaskData (TaskId NVARCHAR(50))
INSERT INTO #TaskData (TaskId) SELECT CONVERT(NVARCHAR(50), NEWID())
UPDATE #TaskData SET TaskId = CONVERT(NVARCHAR(50), NEWID())
DROP TABLE #TaskData
风和你 2024-09-01 04:23:20

请尝试以下演员表:

CAST(NEWID() AS varchar(255))

Please try the following cast:

CAST(NEWID() AS varchar(255))
残疾 2024-09-01 04:23:20

使用 varchar 数据类型,nvarchar 需要双倍大小

use varchar data type, nvarchar needs double size

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文