0

私の問題: mysql でフィールド「binary」を選択できません

構造データベース

これはクエリです(「等しくない」ことに注意してください):

SELECT *
FROM `pt_peers`
WHERE `info_hash` != '7f398565868f7f08f71d236b88e4e433d2311de8'

そして、これは構造です:

CREATE TABLE IF NOT EXISTS `pt_peers` (
  `info_hash` binary(20) NOT NULL,
  `peer_id` binary(20) NOT NULL,
  `compact` binary(6) NOT NULL,
  `ip` char(15) NOT NULL,
  `port` smallint(5) unsigned NOT NULL,
  `state` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `updated` int(10) unsigned NOT NULL,
  PRIMARY KEY (`info_hash`,`peer_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

ハッシュを直接選択すると、答えは null です。:/

スクリプトは次のとおりです。

4

1 に答える 1

1

16進数のASCII表現の40バイトの文字列を渡しているようです。ここで、テーブルは20バイトのバイナリを保持するものとして定義されています。

バイナリ文字列に16進リテラル表記を使用して、これを試してください。

SELECT *
FROM `pt_peers`
WHERE `info_hash` = x'7f398565868f7f08f71d236b88e4e433d2311de8'

詳細については、これを参照してください。

于 2012-10-29T21:08:19.873 に答える