MySQL - 使用不等于条件时会将值为NULL的数据也过滤的问题

示例

SELECT * FROM tbl_user WHERE user_code != 'A0001

    '期望结果是用户编码不等于 A0001 的所有用户,实际结果为用户编码不等于 A0001 且不为 NULL 的所有用户

方案

SELECT * FROM tbl_user WHERE IFNULL(user_code,'') != 'A0001'

    此时获取的结果才与一开始的预期相一致,即通过 IFNULL 函数将 NULL 的值转换为非 NULL 后再判断

 

 

MySQL中,自5.7版本起支持JSON数据类型的字段。可以通过特定的JSON函数和操作符来查询JSON字段中的数据。以下是如何使用JSON字段的值作为查询条件过滤结果的几种方法: 1. 使用`->`或`->>`操作符来获取JSON字段中的具体值,并将其用于比较。`->`操作符返回JSON对象或数组,而`->>`返回一个文本字符串。例如,如果你有一个名为`data`的列,其中存储的是JSON数据,你想查询包含特定键值对的记录,可以这样写: ```sql SELECT * FROM table_name WHERE data->'$.key' = 'value'; ``` 这将返回所有在`data`字段的`$.key`路径下值为`value`的记录。 2. 使用`JSON_CONTAINS`函数来检查JSON字段是否包含某个值。例如,如果你想检查`data`列是否包含键为`key`且值为`value`的对象,可以使用: ```sql SELECT * FROM table_name WHERE JSON_CONTAINS(data, '{"key": "value"}'); ``` 3. 使用`JSON_SEARCH`函数来查找JSON文档中的文本字符串。如果你知道要查找的文本值,可以使用此函数来过滤结果。例如: ```sql SELECT * FROM table_name WHERE JSON_SEARCH(data, 'one', 'value') IS NOT NULL; ``` 这将返回所有`data`字段中包含文本`value`的记录。 4. 使用`JSON_EXTRACT`函数来提取JSON文档中的值,并使用该值进行比较。例如: ```sql SELECT * FROM table_name WHERE JSON_EXTRACT(data, '$.key') = '"value"'; ``` 注意,使用`JSON_EXTRACT`时,右侧的比较值应该用双引号包围,以表示它是一个字符串值。 在使用这些操作符和函数时,请确保你的MySQL版本支持它们,并且你的JSON字段数据格式是正确的。在实际使用中,可能需要根据你的具体需求和JSON数据的结构来选择合适的查询方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值