by Guest » 18 Jan 2025, 22:10
Code: Select all
CREATE TABLE `tmp` (
`wid` bigint unsigned NOT NULL,
`simhash` binary(255) NOT NULL,
PRIMARY KEY (`wid`),
UNIQUE KEY `u_simhash` (`simhash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
TRUNCATE `tmp`;
insert into tmp set wid=4, simhash=b'10';
SELECT wid,bin(simhash+0) FROM tmp;
Wie oben möchte ich eine Binärzeichenfolge „10“ (entspricht Dezimalzahl 2) in ein Binärfeld einfügen.
Aber es schlägt fehl. Das Ergebnis von bin(simhash+0) ist 0 und nicht 10, wie ich erwartet hatte.
Was ist also das Problem? Ich möchte nur eine Binärzeichenfolge (wie „1000110101101....“) in das Binärfeld einfügen.
- Env: MySQL 8.0.40
- Client: MySQL Workbench 8.0.40
PS: Verwenden Sie SELECT bin(simhash+0), um die Binärzeichenfolge des zu erhalten Feld. Z.B. Zeigt „10“ für die Dezimalzahl 2 an.

[code]CREATE TABLE `tmp` (
`wid` bigint unsigned NOT NULL,
`simhash` binary(255) NOT NULL,
PRIMARY KEY (`wid`),
UNIQUE KEY `u_simhash` (`simhash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
TRUNCATE `tmp`;
insert into tmp set wid=4, simhash=b'10';
SELECT wid,bin(simhash+0) FROM tmp;
[/code]
Wie oben möchte ich eine Binärzeichenfolge „10“ (entspricht Dezimalzahl 2) in ein Binärfeld einfügen.
Aber es schlägt fehl. Das Ergebnis von bin(simhash+0) ist 0 und nicht 10, wie ich erwartet hatte.
Was ist also das Problem? Ich möchte nur eine Binärzeichenfolge (wie „1000110101101....“) in das Binärfeld einfügen.
[list]
[*]Env: MySQL 8.0.40
[*]Client: MySQL Workbench 8.0.40
[/list]
PS: Verwenden Sie SELECT bin(simhash+0), um die Binärzeichenfolge des zu erhalten Feld. Z.B. Zeigt „10“ für die Dezimalzahl 2 an.
[img]https://i.sstatic.net/YjsD5wKx.png[/img]