有BINARY
类型的MySQL查询参数。 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
使用二进制值作为参数的正确方法是什么?
答案 0 :(得分:0)
我试图将Guid
存储为BINARY(16)
。
首先,我尝试了guid.ToByteArray()
但没有效果。然后我尝试了guid.ToString().Replace("-", "")
也失败了。
感谢@ daniel-a-white然后我尝试了guid.ToString().Replace("-", "")
,然后将生成的十六进制数转换为字节数组(如here所述)并且有效。
答案 1 :(得分:0)
您可以将GUID
存储为Binary (16)
UNHEX(REPLACE(@baz, "-",""))
这将返回二进制(16)。
并选择
SELECT * FROM mytable WHERE HEX(baz) = @baz