【发布时间】:2016-12-02 08:23:03
【问题描述】:
我有一个 SQL Server 表,其中包含 userid 类型的 uniqueidentifier 列,列值为 9EBC02CE-FA3A-4A62-A3B7-B9B6CFD33B7E。
当我这样查询时:
WHERE userid = '9EBC02CE-FA3A-4A62-A3B7-B9B6CFD33B7E'
查询运行成功。如果我在字符串末尾添加额外的字符,它也可以正常工作,如下所示
WHERE userid = '9EBC02CE-FA3A-4A62-A3B7-B9B6CFD33B7Eqweqweqwemmmmmmmmmm'
但问题是当我在字符串开头添加额外字符时,查询会显示错误。
WHERE userid = 'A9EBC02CE-FA3A-4A62-A3B7-B9B6CFD33B7E'
错误显示为
从字符串转换为唯一标识符时转换失败
我的问题是为什么仅在字符串开头添加字符时显示错误以及如何在存储过程中跟踪此错误
【问题讨论】:
-
这个answer 可以帮到你!
-
这个还有 cmets ...stackoverflow.com/questions/1390109/…
-
如果你停止将东西作为字符串传递,我怀疑一切都会容易得多。当您的存储过程需要的是唯一标识符时,它正在接受 string。那么为什么不把它作为参数类型呢?
-
我的存储过程中有一个 uniqueidentifier 数据类型的局部变量,但是如果前端将值传递给存储过程,例如“A9EBC02CE-FA3A-4A62-A3B7-B9B6CFD33B7E”,其中包含一个额外的字符“ A" 那么如何跟踪查询错误@Damien_The_Unbeliever
-
接收 uniqueidentifier 作为字符串可能有正当理由,例如,如果它来自 JSON 或 XML 文件。然后转换和验证必须发生在某个地方......
标签: sql sql-server sql-server-2008 tsql uniqueidentifier