static string OperatorToString()

in MySQL.Data/src/X/Protocol/X/ExpUnparser.cs [182:235]


    static string OperatorToString(Operator e)
    {
      string name = e.Name;
      List<string> parameters = new List<string>();
      foreach (Expr p in e.Param)
      {
        parameters.Add(ExprToString(p));
      }
      if ("between".Equals(name) || "not_between".Equals(name))
      {
        name = name.Replace("not_between", "not between");
        return string.Format("({0} {1} {2} AND {3})", parameters[0], name, parameters[1], parameters[2]);
      }
      else if ("in".Equals(name) || "not_in".Equals(name))
      {
        name = name.Replace("not_in", "not in");
        return string.Format("{0} {1}{2}", parameters[0], name, ParamListToString(parameters.GetRange(1, parameters.Count - 1)));
      }
      else if ("like".Equals(name) || "not_like".Equals(name))
      {
        name = name.Replace("not_like", "not like");
        string s = string.Format("{0} {1} {2}", parameters[0], name, parameters[1]);
        if (parameters.Count == 3)
        {
          s += " ESCAPE " + parameters[2];
        }
        return s;
      }
      else if ("regexp".Equals(name) || "not_regexp".Equals("name"))
      {
        name = name.Replace("not_regexp", "not regexp");
        return string.Format("({0} {1} {2})", parameters[0], name, parameters[1]);
      }
      else if ("cast".Equals(name))
      {
        return string.Format("cast({0} AS {1})", parameters[0], parameters[1].Replace("\"", ""));
      }
      else if ((name.Length < 3 || infixOperators.Contains(name)) && parameters.Count == 2)
      {
        return string.Format("({0} {1} {2})", parameters[0], name, parameters[1]);
      }
      else if (parameters.Count == 1)
      {
        return string.Format("{0}{1}", name, parameters[0]);
      }
      else if (parameters.Count == 0)
      {
        return name;
      }
      else
      {
        return name + ParamListToString(parameters);
      }
    }