diff --git a/DQXDbTools.py b/DQXDbTools.py index a6d98a4..a386501 100644 --- a/DQXDbTools.py +++ b/DQXDbTools.py @@ -254,7 +254,7 @@ def _CreateSelectStatementSub_Compound(self,statm): def _CreateSelectStatementSub_Comparison(self,statm): #TODO: check that statm['ColName'] corresponds to a valid column name in the table (to avoid SQL injection) - if not(statm['Tpe'] in ['=', '<>', '<', '>', '<=', '>=', '!=', 'LIKE', 'CONTAINS', 'NOTCONTAINS', 'STARTSWITH', 'ISPRESENT', 'ISABSENT', '=FIELD', '<>FIELD', 'FIELD', 'between']): + if not(statm['Tpe'] in ['=', '<>', '<', '>', '<=', '>=', '!=', 'LIKE', 'CONTAINS', 'NOTCONTAINS', 'STARTSWITH', 'ISPRESENT', 'ISABSENT', '=FIELD', '<>FIELD', 'FIELD', 'between', 'ISEMPTYSTR', 'ISNOTEMPTYSTR']): raise Exception("Invalid comparison statement {0}".format(statm['Tpe'])) processed=False @@ -272,6 +272,18 @@ def _CreateSelectStatementSub_Comparison(self,statm): self.querystring+=st self.querystring_params+=st + if statm['Tpe']=='ISEMPTYSTR': + processed=True + st='{0}=""'.format(statm['ColName']) + self.querystring+=st + self.querystring_params+=st + + if statm['Tpe']=='ISNOTEMPTYSTR': + processed=True + st='{0}<>""'.format(statm['ColName']) + self.querystring+=st + self.querystring_params+=st + if statm['Tpe']=='=FIELD': processed=True st='{0}={1}'.format(ToSafeIdentifier(statm['ColName']),ToSafeIdentifier(statm['ColName2']))