これは私がここに投稿した前号のフォローアップです。
テストテーブルを作成しました:
CREATE TABLE `my_test_table` (
`record_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`col1` BINARY(20) NULL DEFAULT NULL,
`col2` CHAR(40) NULL DEFAULT NULL,
PRIMARY KEY (`record_id`)
)
次に、ステートメントを実行しました。
INSERT INTO my_test_table (col1, col2) VALUES(sha1('test'), sha1('test') );
データは次のようになります...
1 0x6139346138666535636362313962613631633463 a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
VARBINARY列に対してどのように選択できるかわかりません。私は次のようにCHARに対して選択することができます:
SELECT * FROM my_test_table WHERE col2 = sha1('test');
私はもう試した
SELECT * FROM my_test_table WHERE col1 = hex(sha1('test'));
そして他のバリエーションが解決策を見つけることができないようです(もしあれば)。新しい挿入を許可する前に、データベースに値がすでに存在するかどうかを確認できる必要があります。私は以前の提案に基づいてVARBINARYとBINARYを見ていました。ありがとう。