querywrapper.like中 如何排除空值
时间: 2023-09-22 18:12:16 浏览: 142
你可以在使用 `querywrapper.like` 方法时添加一个判断,判断要查询的字段是否为空,如果为空则不执行查询,代码示例:
```python
from sqlalchemy import or_
from sqlalchemy.orm import Query
def like_with_not_null(query: Query, field, value):
if value:
query = query.filter(or_(
getattr(field, 'like')('%' + value + '%'),
))
return query
```
在上述代码中,我们首先判断 `value` 是否为空,如果不为空则执行查询,否则直接返回原查询。这样可以排除空值,只查询非空值的结果。
相关问题
java querywrapper.like中 如何排除空值
在Java QueryWrapper中使用like方法时,可以通过以下方式排除空值:
1. 使用StringUtils.isNotBlank()方法判断字符串是否为空,如果不为空再执行like查询。
示例代码:
```
String keyword = "test";
QueryWrapper<User> wrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(keyword)) {
wrapper.like("username", keyword);
}
List<User> userList = userService.list(wrapper);
```
2. 使用lambda表达式过滤空值后再执行like查询。
示例代码:
```
String keyword = "test";
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().like(StringUtils.isNotBlank(keyword), User::getUsername, keyword);
List<User> userList = userService.list(wrapper);
```
以上两种方式都可以排除空值,具体选择哪种方式取决于个人习惯和项目需求。
querywrapper.like失效条件
当使用 `querywrapper.like` 方法时,如果传入的值为 `None` 或空字符串 `''`,则该条件会失效,不会被添加到查询条件中。这是因为在 SQL 中,使用 `LIKE` 进行模糊匹配时,如果匹配字符串为空,则会返回所有记录,因此为了避免这种情况,`querywrapper` 在处理空值时会将该条件忽略掉。如果您需要在查询中包含空值条件,可以考虑使用 `querywrapper.is_null` 方法。
阅读全文