我Employee在SQLite数据库中有一个表.其主键是GUID类型的"ID".我尝试使用以下查询找到带有id= guid 的记录'a8828ddf-ef22-4d36-935a-1c66ae86ebb3'但没有运气:
SELECT * FROM Employee
WHERE Employee.Id = 'a8828ddf-ef22-4d36-935a-1c66ae86ebb3'
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我应该如何编写查询?
谢谢,
Sam*_*nen 11
这是一个老问题,但提出了搜索,而选定的答案是正确的,它可能不适合每个人.例如,当使用.NET绑定到SQLite时.
原因是当GUID格式化时,a8828ddf-ef22-4d36-935a-1c66ae86ebb3您不能只删除破折号并将其放入X'...'.GUID有几个部分,数据库以不同方式存储二进制文件.
当GUID a8828ddf-ef22-4d36-935a-1c66ae86ebb3它将以小端存储为X'df8d82a822ef364d5a93b3eb86ae661c'.请注意,字符串中的所有部分都是相反的.
当然,如果您通过删除破折号直接插入数据,因为X'a8828ddfef224d36935a1c66ae86ebb3'您也可以使用它来检索它,但如果让.NET处理转换,GUID将存储为小端字节表示.
(这都假设小端架构,没有在大端测试)
GUID可能存储为二进制blob; 尝试:
SELECT * FROM Employee
WHERE Employee.Id = X'a8828ddfef224d36935a1c66ae86ebb3';
Run Code Online (Sandbox Code Playgroud)