📜  where field is null sql knex - SQL (1)

📅  最后修改于: 2023-12-03 14:48:27.071000             🧑  作者: Mango

如何使用Knex查询null值

在SQL查询中,有时需要筛选出空(null)值。在Knex中,可以使用whereNull方法来查询null值。

查询语法

使用whereNull方法可以查询指定字段中的null值。例如,下面的查询语句将返回users表中名字为null的所有行:

knex.select('*').from('users').whereNull('name');

可以使用whereNotNull方法来查询非null值:

knex.select('*').from('users').whereNotNull('name');
字段存在性检查

可以使用whereExists方法来检查一个子查询是否返回了至少一行记录:

knex('users').whereExists(function() {
  this.select('*').from('accounts').whereRaw('accounts.user_id = users.id');
});

如果子查询返回了至少一行记录,则主查询中的每一行都会包括在结果中。

字段不存在性检查

可以使用whereNotExists方法来检查一个子查询是否没有返回任何记录:

knex('users').whereNotExists(function() {
  this.select('*').from('accounts').whereRaw('accounts.user_id = users.id');
});

如果子查询没有返回任何记录,则主查询中的每一行都会包括在结果中。

代码示例

下面是一个完整的Knex查询,它从users表中查询名字为null的所有行:

knex.select('*')
    .from('users')
    .whereNull('name')
    .then(rows => {
        console.log(rows);
    })
    .catch(error => {
        console.error(error);
    });
结论

使用Knex可以轻松地查询null值。使用whereNull方法可以查询指定字段中的null值,使用whereNotNull方法可以查询非null值。可以使用whereExists方法来检查一个子查询是否返回了至少一行记录,使用whereNotExists方法来检查一个子查询是否没有返回任何记录。