我有一个包含多行的表,每一行都有空单元格,我试图统计每行中所有空单元格的总数。
表模式ID,名称,colmn1,colmn2,colmn3,colmn4等...直到colmn20
我试图做这样的事情
knexDb('users').where(function() {
this.where('colmn1', '=', '')
.orWhere('colmn2', '=', '')
.orWhere('colmn3', '=', '')
.orWhere('colmn4', '=', '')
.orWhere('colmn5', '=', '')
.orWhere('colmn6', '=', '')
.orWhere('colmn7', '=', '')
.orWhere(........ etc till colmn20
})
.map(function(row) {
// console.log(row)
var emptycolmns = 0;
if(row.colmn1 === ''){
emptycolmns++
}else if (row.colmn2 === ''){
emptycolmns++
}else if ....... etc till colmn20
})
.then(rows => {
console.log(rows);
console.log(emptycolmns);
})
但这对我不起作用。
PS 。如您所见,对所有列进行硬编码都不是一件好事,是否有更好的方法来实现这两个结果,并提供更好的解决方案。
答案 0 :(得分:1)
我想到的最接近计数带有空字符串的列的事情是:
if( $(input).attr('type') == 'password' && /^[a-zA-Z0-9- ]*$/.test($(input).val()) != false) {
return false;
}
在这里,您依赖于每个表达式都将解析为整数的事实,因此最终您将得到类似以下结果:
knex.raw(
`select (col1='') + (col2='') + (col3='') as empty_cols from foo`
)
正如您所指出的那样,它似乎不太灵活,但是在不了解更多有关问题的情况下,很难就首选方案提出建议。