我想从具有给定字段值的表中检索记录。查询是:SQL查询不返回记录
declare @imei varchar(50)
set @imei = 'ee262b57-ccb4-4a2b-8410-6d8621fd9328'
select *
from tblDevices
where imei = @imei
它不返回任何内容。
如果我注释掉where子句中的所有记录,包括我正在查找的那个。该值显然在表字段中并且完全匹配,但我无法获得where子句的工作。
我从字面上将表中的值复制出来以确保它是正确的。
我很感激任何关于我的错误的指导。
表DEF:
CREATE TABLE [dbo].[tblDevices](
[id] [int] IDENTITY(1,1) NOT NULL,
[create_date] [datetime] NOT NULL,
[update_date] [datetime] NOT NULL,
[other_id] [int] NULL,
[description] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[authorized] [int] NOT NULL,
[imei] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_tblDevices] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
编辑
使用user2864740建议,我询问了以下内容:
select hashbytes('SHA1', imei) as h1 from tblDevices where id =8
returns:
0x43F9067C174B2F2F2C0FFD17B9AC7F54B3C630A2
select hashbytes('SHA1', @imei) as h2
returns:
0xB9B82BB440B04729B2829B335E6D6B450572D2AB
所以,我不知道这意味着什么。我可怜的小脑子难以理解A <> A ?!如果这不是一个排序问题,这里发生了什么?两个相同的值如何不被视为相等?
编辑2
这是表记录我想:
8 2013-10-22 12:43:10.223 2013-10-22 12:43:10.223 -1 1 ee262b57-ccb4-4a2b-8410-6d8621fd9328
imei和@imei的数据类型是否相同?例如nvarchar或varchar? –
你试过用'like'代替=? –
是的,我试过''喜欢',我用'LTRIM'和'RTRIM'包装了@imei。没有工作。 –