Ejemplo n.º 1
0
        private List <StrPoint> FindAllUnion(string sql)
        {
            List <StrPoint> findStack = new List <StrPoint>();
            var             patterns  = new string[] { "^UNION\\s+ALL", "^\\(", "^\\)", "^'", "^UNION" };
            var             curPoint  = 0;
            var             subSql    = sql;

            do
            {
                foreach (var keyWord in patterns)
                {
                    var meetContent = "";
                    if (StartWith(subSql, keyWord, out meetContent))
                    {
                        findStack.Add(new StrPoint()
                        {
                            Pattern = keyWord, ActualContent = meetContent, Point = curPoint
                        });
                        break;
                    }
                }
                //开心消消乐 '(' ')'消去
                SqlMacher.ClearCombo(findStack, patterns[1], patterns[2]);
                //开心消消乐 ''' '''消去
                SqlMacher.ClearCombo(findStack, patterns[3], patterns[3]);
                //开心消消乐 '(' 'mainWord' ')'消去
                SqlMacher.ClearCombo(findStack, patterns[1], patterns[2], patterns[0], patterns[4]);
                //开心消消乐 ''' 'mainWord' '''消去
                SqlMacher.ClearCombo(findStack, patterns[3], patterns[3], patterns[0], patterns[4]);

                ++curPoint;
                subSql = subSql.Substring(1, subSql.Length - 1);
            } while (!string.IsNullOrWhiteSpace(subSql));
            return(findStack);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取所有匹配的点
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="mainWord"></param>
        /// <returns></returns>
        private List <StrPoint> GetAllMatchPoint(string sql, string mainWord)
        {
            List <StrPoint> findStack = new List <StrPoint>();
            var             patterns  = new string[] { mainWord, "^\\(", "^\\)", "^'" };
            var             curPoint  = 0;
            var             sb        = new StringBuilder(sql);

            do
            {
                foreach (var keyWord in patterns)
                {
                    string meetContent;
                    if (StartWith(sb.ToString(), keyWord, out meetContent))
                    {
                        findStack.Add(new StrPoint()
                        {
                            Pattern = keyWord, ActualContent = meetContent, Point = curPoint
                        });
                    }
                }
                //开心消消乐 '(' ')'消去
                SqlMacher.ClearCombo(findStack, patterns[1], patterns[2]);
                //开心消消乐 ''' '''消去
                SqlMacher.ClearCombo(findStack, patterns[3], patterns[3]);
                //开心消消乐 '(' 'mainWord' ')'消去
                SqlMacher.ClearCombo(findStack, patterns[1], patterns[2], mainWord);
                //开心消消乐 ''' 'mainWord' '''消去
                SqlMacher.ClearCombo(findStack, patterns[3], patterns[3], mainWord);
                ++curPoint;
                if (sb.Length > 0)
                {
                    sb.Remove(0, 1);
                }
            } while (sb.Length > 0);
            return(findStack);
        }