由于某种原因,我无法在 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'
Run Code Online (Sandbox Code Playgroud)
使用 LIKE 也不起作用。
Rah*_*hul 11
尝试这个
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE CAST(secguid as uniqueidentifier) = CAST('3137459D-EFDE-449E-94A3-89345A8580FA' as uniqueidentifier)
Run Code Online (Sandbox Code Playgroud)
由于您提到该列存储为NVARCHAR,因此该字符串可能具有前导或尾随空格,这就是为什么它可能不会在带有该子句的查询中弹出WHERE。
你可以试试这个:
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE LTRIM(RTRIM(secguid)) = '3137459D-EFDE-449E-94A3-89345A8580FA'
Run Code Online (Sandbox Code Playgroud)
这应该显示结果,因为WHERE子句中的前导空格和尾随空格被消除。
另外,如果您想使用运算LIKE符,您可以将查询编写为:
SELECT [fileID],
[fileCOde],
[filePassword],
[fileDescription],
[rowguid],
[secguid]
FROM [dbo].[dbMobileFile]
WHERE secguid LIKE '%3137459D-EFDE-449E-94A3-89345A8580FA%'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!!!