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
有一个 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