在MySQL中使用Json字段,获得不一致的行为(C#)

时间:2016-07-02 04:16:05

标签: c# mysql json

我正在尝试确定一个简单的Jason数组中是否已经存在一个值。

在我的代码中,我构建了以下字符串:

SELECT * 
FROM Groups 
WHERE JSON_CONTAINS(Members,'7') AND CompanyId = 1 AND Name ="QA"

var numRowsUpdated = cmd.ExecuteNonQuery();

json专栏的内容如下:[3,7] 如果7在数组中(或不在数组中),则返回的值始终为-1。 将相同的字符串粘贴到MySQL Workbench中,我得到了预期的结果。

我是否错误地使用了JSON_CONTAINS?

BTW:与“7”相同的行为

1 个答案:

答案 0 :(得分:1)

顾名思义,

ExecuteNonQuery不适用于返回SELECT等数据的查询。它适用于INSERTUPDATE之类的内容,它会返回受更新影响的行数。

我不记得MySQL中针对非更新查询的“受影响的行”的确切语义,但更清楚的是使用SELECT COUNT(*) FROM ...之类的查询然后ExecuteScalar来获取计数,如果返回的行数就是你所关心的。