试一试
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE CAST(secguid as uniqueidentifier) = CAST('3137459D-EFDE-449E-94A3-89345A8580FA' as uniqueidentifier)
WHERE secguid = CAST('3137459D-EFDE-449E-94A3-89345A8580FA' as uniqueidentifier)
对我也有效。 - mems既然您提到该列存储为NVARCHAR
,那么字符串可能具有前导或尾随空格,这就是为什么它可能不会在带有WHERE
子句的查询中弹出的原因。
您可以尝试这个:
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE LTRIM(RTRIM(secguid)) = '3137459D-EFDE-449E-94A3-89345A8580FA'
这应该显示您的结果,因为在 WHERE
子句中消除了前导和尾随空格。
此外,如果您想使用 LIKE
运算符,可以将查询编写为:
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE secguid LIKE '%3137459D-EFDE-449E-94A3-89345A8580FA%'
WHERE
子句获取结果,这样做就可以了(虽然不是最好的解决方案,我完全同意)。 - Satwik Nadkarny查看数据库内的GUID值存储为32个十六进制数字:00000000000000000000000000000000,因此如果我们通过由连字符分隔的32个十六进制数字进行搜索:00000000-0000-0000-0000-000000000000,则不会得到任何输出。
我曾经遇到过一个损坏的数据库问题。在WHERE子句中包含了一些GUID,而同一张表中的其他GUID却无法返回结果。
事实证明,这是由于数据库存在索引问题。运行DBCC以确保您的数据库没有损坏。
被接受的答案有效,但比较啰嗦,可能不是预期的实现方法。UniqueIdentifier 是由 {} 限定的,因此以下是最简单的方式:
SELECT * FROM dbMobileFile WHERE secguid = '{3137459D-EFDE-449E-94A3-89345A8580FA}'
试试这个:
SELECT * FROM dbMobileFile WHERE secguid = ('3137459D-EFDE-449E-94A3-89345A8580FA')
使用括号将GUID字符串括起来,例如:(
'GUID')
LIKE
查询。并尽量使用问题中的文本(除了图片)。 - Sangharshsecguid
是否被定义为uniqueidentifier
? - Damien_The_UnbelieverLTRIM
和RTRIM
。我想应该可以解决问题。 - Satwik Nadkarny