有一个类型为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使用二进制值作为参数的正确方法是什么?
发布于 2017-10-05 20:04:05
我试图将Guid存储为BINARY(16)。
首先,我尝试了guid.ToByteArray(),但它不起作用。然后我尝试了guid.ToString().Replace("-", ""),它也失败了。
多亏了@daniel,然后我尝试了guid.ToString().Replace("-", ""),然后将得到的十六进制数字转换成一个字节数组(如描述的here),这是可行的。
发布于 2017-10-05 21:58:58
您可以将GUID存储为Binary (16)
UNHEX(REPLACE(@baz, "-","")) 这将返回二进制(16)。
并选择
SELECT * FROM mytable WHERE HEX(baz) = @bazhttps://stackoverflow.com/questions/46593651
复制相似问题