public virtual void Visit(SoqlStringContainsExpression v)
        {
            Output.Write('(');
            v.haystack.Accept(this);
            Output.Write(" like '");
            if (v.position != SoqlStringContainsPosition.Start)
            {
                Output.Write('%');
            }
            string s = v.needle.Replace("'", "''");
            string suffix;

            if (s.IndexOfAny(LikeMetacharacters) >= 0)
            {
                s      = s.Replace("~", "~~").Replace("%", "~%").Replace("_", "~_").Replace("[", "~[");
                suffix = "' escape '~')";
            }
            else
            {
                suffix = "')";
            }
            Output.Write(s);
            if (v.position != SoqlStringContainsPosition.End)
            {
                Output.Write('%');
            }
            Output.Write(suffix);
        }
 public virtual void Visit(SoqlStringContainsExpression v)
 {
     Output.Write('(');
     v.haystack.Accept(this);
     Output.Write(" like '");
     if (v.position != SoqlStringContainsPosition.Start)
         Output.Write('%');
     string s = v.needle.Replace("'", "''");
     string suffix;
     if (s.IndexOfAny(LikeMetacharacters) >= 0)
     {
         s = s.Replace("~", "~~").Replace("%", "~%").Replace("_", "~_").Replace("[", "~[");
         suffix = "' escape '~')";
     }
     else
     {
         suffix = "')";
     }
     Output.Write(s);
     if (v.position != SoqlStringContainsPosition.End)
         Output.Write('%');
     Output.Write(suffix);
 }
 void Sooda.QL.ISoqlVisitor.Visit(SoqlStringContainsExpression v)
 {
     v.haystack.Accept(this);
 }
 void Sooda.QL.ISoqlVisitor.Visit(SoqlStringContainsExpression v)
 {
     v.haystack.Accept(this);
 }