Element nomenclature SQL query : minor fix

the filter "is not empty" in nomenclature don't work for every case.
Replace SQL sentence "IS NULL" by "!= ''" because an empty string is not
a NULL value string, but a NULL value string is like an empty string
This commit is contained in:
joshua
2021-04-11 12:39:38 +02:00
parent 8ef0d0b2f0
commit 794af49a3a

View File

@@ -210,7 +210,7 @@ void ElementQueryWidget::setQuery(const QString &query)
beginning_rx.append(QString("^(").append(strl.join("|"))); beginning_rx.append(QString("^(").append(strl.join("|")));
beginning_rx.append(")"); beginning_rx.append(")");
QRegularExpression rx_is_not_null(beginning_rx + " IS NOT NULL$"); QRegularExpression rx_is_not_null(beginning_rx + " != ''$");
QRegularExpression rx_is_null (beginning_rx + " IS NULL$"); QRegularExpression rx_is_null (beginning_rx + " IS NULL$");
QRegularExpression rx_like (beginning_rx + QString(" LIKE'%(.+)%'$")); QRegularExpression rx_like (beginning_rx + QString(" LIKE'%(.+)%'$"));
QRegularExpression rx_not_like (beginning_rx + QString(" NOT LIKE'%(.+)%'$")); QRegularExpression rx_not_like (beginning_rx + QString(" NOT LIKE'%(.+)%'$"));
@@ -310,22 +310,22 @@ QString ElementQueryWidget::queryStr() const
case 0: //No filter case 0: //No filter
break; break;
case 1: //Not empty case 1: //Not empty
filter_ += QString(" AND ") += key += " IS NOT NULL"; filter_ += QStringLiteral(" AND ") += key += " != ''";
break; break;
case 2: //empty case 2: //empty
filter_ += QString(" AND ") += key += " IS NULL"; filter_ += QStringLiteral(" AND ") += key += " IS NULL";
break; break;
case 3: // contain case 3: // contain
filter_ += QString(" AND ") += key += QString(" LIKE'%") += f.second += "%'"; filter_ += QStringLiteral(" AND ") += key += QStringLiteral(" LIKE'%") += f.second += "%'";
break; break;
case 4: // not contain case 4: // not contain
filter_ += QString(" AND ") += key += QString(" NOT LIKE'%") += f.second += "%'"; filter_ += QStringLiteral(" AND ") += key += QStringLiteral(" NOT LIKE'%") += f.second += "%'";
break; break;
case 5: // is equal case 5: // is equal
filter_ += QString(" AND ") += key += QString("='") += f.second += "'"; filter_ += QStringLiteral(" AND ") += key += QStringLiteral("='") += f.second += "'";
break; break;
case 6: // is not equal case 6: // is not equal
filter_ += QString(" AND ") += key += QString("!='") += f.second += "'"; filter_ += QStringLiteral(" AND ") += key += QStringLiteral("!='") += f.second += "'";
break; break;
} }
} }