【发布时间】:2018-03-12 19:13:28
【问题描述】:
我正在尝试使用参考表来更新代码,但出现错误:
从字符串转换为转换失败 唯一标识符
ID 是一个 guid:086B9FE7-3980-47D7-BB05-003708F1D564,我要使用的参考代码是 4 个字符,例如 H100。
当我尝试更改表中的数据类型然后使用引用表中的值更新文件时收到初始错误。我根据其他文章尝试过转换和转换,但即使转换或转换成功,我仍然收到相同的消息。
参考表:
Id | ReportCode
6340FCEA-161C-42F4-8D7F-46B4C2E6C4E2 | H100
数据表:
CauseId
6340FCEA-161C-42F4-8D7F-46B4C2E6C4E2
我用来尝试更新的代码。第一个有效,第二个带来错误消息:
select cast(nvarchar(36), ID) as ID
from [dbo].[reftable]
UPDATE dbo.datatable
SET causeid = L.reportcode
FROM dbo.datatable S
join dbo.reftable L on S.causeid = L.id
【问题讨论】:
-
但是你想做什么?使用不同的 GUID 更新 GUID 字段?更改列类型本身?目前还不清楚。但如果列类型是 uniqueidentifier,那么它必须是实际的 36 个字符的 uniqueidentifier 格式,并且
H100将永远无法工作。如果您提供一些代码或示例,它会更容易提供帮助。 -
抱歉,我更新了
-
好的,那么 DataTable 和 RefTable 中是否有 ReportCode 字段?
-
您需要将表格列更改为
VARCHAR。当您尝试ALTER TABLE dbo.datatable ALTER COLUMN causeid VARCHAR(200)时,请发布它引发的错误。UNIQUEIDENTIFIER需要一种非常特殊的字符串格式,带有连字符和正好 36 个字节,而值 'H100' 不符合。
标签: sql-server sql-server-2008 tsql guid