0

特定のフィールド値を持つテーブルからレコードを取得しようとしています。クエリは次のとおりです。

declare @imei varchar(50)
set @imei = 'ee262b57-ccb4-4a2b-8410-6d8621fd9328'

select *
from tblDevices
where imei = @imei

これは何も返しません。

where 句をコメントアウトすると、探しているレコードを含むすべてのレコードが返されます。値は明らかにテーブル フィールドにあり、正確に一致しますが、where 句を機能させることができません。

値が正しいことを確認するために、文字通りテーブルから値をコピーしました。

私の間違いに関するご指導をいただければ幸いです。

テーブル定義:

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 つの同一の値が等しいと見なされないのはなぜですか?

編集 2

これは私が欲しいテーブルレコードです:

8           2013-10-22 12:43:10.223 2013-10-22 12:43:10.223 -1                                                         1           ee262b57-ccb4-4a2b-8410-6d8621fd9328
4

1 に答える 1

0

ワイルドな刺し傷をするようなものですが、2つのハッシュが実際には異なることを示しており、どこかに余分なスペースがあるだけなのか疑問に思っています。

select *
from tblDevices
where Trim(imei) = (@imei)
于 2013-10-23T11:44:58.473 に答える