问个有难度的问题:
字符串:BJ#001#Q31,500,2000#Q24,500,2000#Q04,600,2500#Q35,650,2500#Q48,700,3200#Q42,750,3500#Q66,800,4000#TABLE
CREATE TABLE WW_TEST

  WW_CITYID  VARCHAR2(20), //城市ID
  WW_MARKETID VARCHAR2(20),//商超ID
  WW_PLUID     VARCHAR2(50), //物料ID
  WW_QTYSOLD   VARCHAR2(50),// 数量
  WW_AMOUNT    VARCHAR2(50) // 金额

把上面的字符串分割到下面的table里,前两个#号隔开的固定了,后面的循环插入。
                        string[] ssArray = s.Split('#');
                        for (int j = 2; j <= ssArray.GetUpperBound(0); j++)
                        {
                            string[] sArray = ssArray[j].Split(',');
                            string sql1 = "insert into ww_test values" +
                             "('"+ sArray[0] + "','"
                            + sArray[1] + "','"
                            + sArray[2] + "','"
                            + sArray[3] + "','"
                            + sArray[4] + "',')";
                            ocomm.CommandText = sql1;
                            ocomm.ExecuteNonQuery();
                        }
                    }
上面的代码,如果没有 城市ID和商超ID,是可以插进去的。

解决方案 »

  1.   

    string s = "BJ#001#Q31,500,2000#Q24,500,2000#Q04,600,2500#Q35,650,2500#Q48,700,3200#Q42,750,3500#Q66,800,4000#";
    Match match = Regex.Match(s, @"(?<cityId>\w+)#(?<etId>\w+)(?<value>.+)");
    string cityId = match.Groups["cityId"].Value;
    string etId = match.Groups["etId"].Value;
    string[] rows = match.Groups["value"].Value.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string row in rows)
    {
    string[] columns = row.Split(',');
    string sqlStr = string.Format("insert into 表名 values('{0}','{1}','{2}','{3}','{4}')", cityId, etId, columns[0], columns[1], columns[2]);
    Response.Write(sqlStr + "<br/>");
    }
    输出:insert into 表名 values('BJ','001','Q31','500','2000')
    insert into 表名 values('BJ','001','Q24','500','2000')
    insert into 表名 values('BJ','001','Q04','600','2500')
    insert into 表名 values('BJ','001','Q35','650','2500')
    insert into 表名 values('BJ','001','Q48','700','3200')
    insert into 表名 values('BJ','001','Q42','750','3500')
    insert into 表名 values('BJ','001','Q66','800','4000')