从字符串转换为uniqueidentifier时转换失败 - 两个GUID

Sim*_*röm 24 sql-server sql-server-2012

我不明白为什么我不能插入这个.我无法发现问题.从字符串转换为uniqueidentifier时,错误消息是 转换失败.

GUID是我从其他表中选择时得到的.

insert into [db].[dbo].[table] (myid,friendid,time1,time2) values
 ( CONVERT(uniqueidentifier,'0C6A36BA-10E4-438F-BA86-0D5B68A2BB15'),
   CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
'2014-01-05 02:04:41.953','2014-01-05 12:04:41.953')
Run Code Online (Sandbox Code Playgroud)

我使用SQL Server 2012

列是

id        uniqueidentifier,
myid      uniqueidentifier,
friendid  uniqueidentifier,
time1     datetime nullable,
time2     datetime nullable
Run Code Online (Sandbox Code Playgroud)

Sim*_*röm 20

问题是ID列没有获得任何值.我在@Martin Smith SQL Fiddle上看到他声明了ID列,但 DEFAULT newid我没有...


M.A*_*Ali 6

DECLARE @t TABLE (ID UNIQUEIDENTIFIER DEFAULT NEWID(),myid UNIQUEIDENTIFIER
                , friendid UNIQUEIDENTIFIER, time1 Datetime, time2 Datetime)
insert into @t (myid,friendid,time1,time2) 
values
 ( CONVERT(uniqueidentifier,'0C6A36BA-10E4-438F-BA86-0D5B68A2BB15'),
   CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
   '2014-01-05 02:04:41.953','2014-01-05 12:04:41.953')

SELECT * FROM @t
Run Code Online (Sandbox Code Playgroud)

结果集 没有任何错误

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?                  ID                  ?                 myid                 ?               friendid               ?          time1          ?          time2          ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? CF628202-33F3-49CF-8828-CB2D93C69675 ? 0C6A36BA-10E4-438F-BA86-0D5B68A2BB15 ? DF215E10-8BD4-4401-B2DC-99BB03135F2E ? 2014-01-05 02:04:41.953 ? 2014-01-05 12:04:41.953 ?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)


Jos*_*ury 6

此处的 MSDN文档

要向M.Ali的答案中添加一些上下文,您可以使用以下代码将字符串转换为唯一标识符

   SELECT CONVERT(uniqueidentifier,'DF215E10-8BD4-4401-B2DC-99BB03135F2E')
Run Code Online (Sandbox Code Playgroud)

如果这样不起作用,请检查以确保您输入了有效的GUID

  • 正确,错误的一个根本原因是无效的 GUID。首先检查它是否具有正确的模式和字符串长度。 (3认同)

kal*_*kal 5

我今天在使用 EF Core 5 执行 SQL 命令时遇到了这个问题ExecuteSqlInterpolatedAsync

错误代码:contactId被放置在' '

await _dbContext.Database.ExecuteSqlInterpolatedAsync($"UPDATE Contact SET Status = {(int)Status} WHERE Id = '{contactId}'");

好的' '代码:从中删除contactId它就可以了

await _dbContext.Database.ExecuteSqlInterpolatedAsync($"UPDATE Contact SET Status = {(int)Status} WHERE Id = {contactId}");