[英]How apply where only a column is not null in adonis query builder
我需要檢查,如果該列percentage_correct
> = parCorrect
如果percentage_correct
<> NULL
我嘗試類似:
const unidadeSequenceAtualEstudante = await Database.select("*")
.from("student_quiz_historics")
.where("student_id", idEstudante)
.where(function(){
this
.whereNotNull("percentage_correct")
.where("percentage_correct", ">=", parQtdAcerto)
})
.where("class_id", idClasse)
.where("book_id", idLivro)
.where("execution_back_status", "<>", "Cancelado")
.orderBy("sequence", "desc")
.first();
但是當我只有percentage_correct
null 的記錄時,他們仍然試圖將其應用於何處。
我在復制您的問題時遇到了一些麻煩。 您所擁有的應該可以工作,但您可能沒有考慮 SQL 在 NULL 方面的行為:與 NULL 相比的任何內容都是 NULL,這就是IS NOT NULL
語法存在的原因。 例如:
foo=# SELECT 1 >= NULL;
?column?
----------
NULL
(1 row)
foo=# SELECT NULL >= 1;
?column?
----------
NULL
(1 row)
這意味着您可以完全不檢查空值,因為只有滿足條件的行才會被返回:
const unidadeSequenceAtualEstudante = await Database.select("*")
.from("student_quiz_historics")
.where({
book_id: idLivro,
class_id: idClasse,
student_id: idEstudante
})
.where('percentage_correct', '>=', parQtdAcerto)
.where("execution_back_status", "<>", "Cancelado")
.orderBy("sequence", "desc")
.first();
這是一個好主意嗎? 值得商榷。 我認為這對於這個目的可能沒問題,但我們不應該假設NULL
與FALSE
是一回事,因為它不是。
如果您的查詢仍然有問題,您需要提供有關您正在使用的數據庫、您的架構是什么以及您遇到什么樣的錯誤的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.