public override string GetConditionSqlString(SqlCondition condition, SqlParameterCollection paras) { string strSQL = string.Empty; switch (condition.Type) { case SqlConditionType.Match: strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%")))); break; case SqlConditionType.MatchPrefix: strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%")))); break; case SqlConditionType.MatchSuffix: strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "")))); break; case SqlConditionType.NotMatch: strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%")))); break; case SqlConditionType.NotMatchPrefix: strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%")))); break; case SqlConditionType.NotMatchSuffix: strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "")))); break; default: return(base.GetConditionSqlString(condition, paras)); } return(strSQL); }
public virtual string GetConditionSqlString(SqlCondition condition, SqlParameterCollection paras) { string strSQL = string.Empty; switch (condition.Type) { case SqlConditionType.EqualTo: if (condition.Value == null) { strSQL = condition.Column + " is null "; } else { strSQL = string.Format("{0} = {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); } break; case SqlConditionType.NotEqualTo: if (condition.Value == null) { strSQL = condition.Column + " is not null "; } else { strSQL = string.Format("{0} <> {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); } break; case SqlConditionType.GreaterThan: strSQL = string.Format("{0} > {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); break; case SqlConditionType.GreaterThanAndEqualTo: strSQL = string.Format("{0} >= {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); break; case SqlConditionType.LessThan: strSQL = string.Format("{0} < {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); break; case SqlConditionType.LessThanAndEqualTo: strSQL = string.Format("{0} <= {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value))); break; case SqlConditionType.Match: strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%")))); break; case SqlConditionType.MatchFullText: strSQL = string.Format("CONTAINS({0},'\"{1}\"')", condition.Column, CorrectFullTextConditionValue(condition.Value)); break; case SqlConditionType.MatchPrefix: strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%")))); break; case SqlConditionType.MatchSuffix: strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "")))); break; case SqlConditionType.NotMatch: strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%")))); break; case SqlConditionType.NotMatchPrefix: strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%")))); break; case SqlConditionType.NotMatchSuffix: strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column, this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "")))); break; case SqlConditionType.In: if (condition.Values.Count > 0) { string[] vals = this.GetValuesSqlString(condition.Values); if (vals.Length > 0) { strSQL = condition.Column + " in (" + string.Join(" , ", vals) + ") "; } if (condition.Values.Contains(null)) { if (string.IsNullOrEmpty(strSQL)) { strSQL = condition.Column + " is null"; } else { strSQL = "(" + strSQL + " or " + condition.Column + " is null)"; } } } break; case SqlConditionType.NotIn: strSQL = condition.Column + " not in (" + string.Join(" , ", this.GetValuesSqlString(condition.Values)) + ") "; break; case SqlConditionType.Custom: strSQL = (string)condition.Value; if ((condition.Parameters != null) && (condition.Parameters.Count > 0)) { foreach (var pitem in condition.Parameters) { paras.Add(pitem); } } break; default: break; } return(strSQL); }