MySQL BINARY类型表示

时间:2017-10-05 19:44:47

标签: c# mysql connector

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

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

2 个答案:

答案 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