【发布时间】:2020-11-03 17:26:16
【问题描述】:
我有一个查询,我想检查列 username 是否既不是 NULL 又不是空字符串。
其中哪一个会更好? 或者它们是等价的?
->WhereNotNull('username')
->Where('username','!=','')
或
->WhereNotIn('username', [NULL, ''])
【问题讨论】:
-
我怀疑
whereNotIn()是否可以与null一起使用,但我从未尝试过。此外,如果您添加更多where()子句,您可能希望使用嵌套的where()来处理此问题并防止出现问题:->where(function($query){ $query->whereNotNull('username')->where('username', '!=', ''); }) ... -
第一个,空值需要使用IS NULL
-
Tim Lewis,是的,在签入 MYSQL 之后,您不能指望 IN(NULL) 等能够正常工作。因此,使用 IS NOT NULL 后跟 !='' 将是正确的继续方式。