由于某种原因,我无法在GUID列上使用比较,它不会返回任何结果。
见下文,将WHERE子句设置为'secguid'列的确切值,它不会返回任何结果。这是怎么回事?
SELECT * FROM dbMobileFile
SELECT * FROM dbMobileFile WHERE secguid = '3137459D-EFDE-449E-94A3-89345A8580FA'
SELECT * FROM dbMobileFile WHERE secguid LIKE '3137459D-EFDE-449E-94A3-89345A8580FA'
使用LIKE也不起作用。
答案 0 :(得分:1)
由于您提到该列存储为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 = '%3137459D-EFDE-449E-94A3-89345A8580FA%'
希望这有帮助!!!
答案 1 :(得分:1)
试试这个
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE CAST(secguid as uniqueidentifier) = CAST('3137459D-EFDE-449E-94A3-89345A8580FA' as uniqueidentifier)
答案 2 :(得分:0)
尝试一下:
SELECT * FROM dbMobileFile WHERE secguid = ('3137459D-EFDE-449E-94A3-89345A8580FA')
使用括号括住GUID字符串,例如(
'GUID')
答案 3 :(得分:0)
我遇到了数据库损坏的问题。一些GUID包含在WHERE子句中,而其他GUIDS位于同一表上则不会返回结果。
证明该数据库存在索引问题。运行DBCC以确保您的数据库没有损坏。