MySQL BINARY 类型表示

MySQL BINARY type representation

有一个 MySQL 类型 BINARY 的查询参数。 MySQL 中的二进制值可以表示为 x'1f7a8e'。但是,当将 MySqlDbType.Binary 类型的参数添加到 MySqlCommand 时,查询将由表示为 _binary '1f7a8e' 的值构成,这会导致查询找不到该行。您可以在下面看到如何使用 MySQL API 的代码示例。

var baz = "1f7a8e";
var cmd = new MySqlCommand("SELECT foo FROM bar WHERE baz=@baz");
cmd.Parameters.Add("@baz", MySqlDbType.Binary).Value = baz;

// Execute query and read result

使用二进制值作为参数的正确方法是什么?

我试图将 Guid 存储为 BINARY(16)

首先我尝试了 guid.ToByteArray() 但没有用。然后我尝试了 guid.ToString().Replace("-", "") 也失败了。

感谢@daniel-a-white,然后我尝试了 guid.ToString().Replace("-", ""),然后将生成的十六进制数转换为字节数组(如 here 所述)并且成功了。

您可以将 GUID 存储为 Binary (16)

UNHEX(REPLACE(@baz, "-","")) 

这将 return binary(16).

然后 SELECT

SELECT * FROM mytable WHERE HEX(baz) = @baz