sql-server – 具有额外字符的唯一标识符仍然在Select中匹配
发布时间:2021-01-12 02:32:46 所属栏目:MsSql教程 来源:网络整理
导读:我们正在使用带有唯一标识符的SQL Server 2012,我们注意到在选择时添加了额外的字符(因此不是36个字符),它仍会返回与UUID的匹配. 例如: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' 使用uuid 7DA26ECB-D599-4469-91D4-F9
|
我们正在使用带有唯一标识符的SQL Server 2012,我们注意到在选择时添加了额外的字符(因此不是36个字符),它仍会返回与UUID的匹配. 例如: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' 使用uuid 7DA26ECB-D599-4469-91D4-F9136EC0B4E8返回行. 但如果你跑: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS' 它还返回带有uuid 7DA26ECB-D599-4469-91D4-F9136EC0B4E8的行. 在执行选择时,SQL Server似乎忽略了36以外的所有字符.这是一个错误/功能还是可以配置的东西? 这不是一个大问题,因为我们在前端验证了长度,但对我来说这似乎不正确. 解决方法如果值包含在大括号{…}中,则隐式转换也有效.如果在查询中添加那些隐式转换,如果原始值太长,则隐式转换将失败,因为最后一个}在错误的位置结束. select *
from some_table
where uuid = '{'+'7DA26ECB-D599-4469-91D4-F9136EC0B4E8'+'}'
如果你尝试转换 SELECT CONVERT(UNIQUEIDENTIFIER,'{'+'7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS'+'}');
你得到 Msg 8169,Level 16,State 2,Line 1 Conversion failed when converting from a character string to uniqueidentifier. (编辑:百科站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL建立数据库及删除数据库操作
- 如何正确备份mediawiki数据库(mysql)而不会搞乱数据?
- sql-server – 使用存储过程作为业务逻辑层
- 我可以通过使用参数来避免所有SQL注入攻击吗?
- .net – 如何在WPF DataGrid中定义自己的列?
- sql-server – 为什么引用连接谓词中的变量强制嵌套循环?
- HTML中图片不存在显示默认图片的方法示例
- sql-server – 为什么这些字符在SQL Server中都是相同的?
- sql-server-2008-r2 – 将SQL Server 2008 R2表/数据从开发
- sql-server – 如何确定服务器上是否正在使用SQL Server ld
站长推荐
热点阅读

