表A 的一个 字段S,
里存放的值是"A1;A2;A3;A4"
※说明:这里分号风格的各个值的长度不定,不一定是2位的。但数据的构成,分号肯定是3个。想通过一个SQL语句,把字段S 分割成4份,给select 出来
即得到,
A1,A2,A3,A4 这样4个字段,类似于以分号来split的效果。
※说明:我这个其实是access数据库,所以不能用declare来定义变量,也不能用存储过程什么的。

解决方案 »

  1.   

    参考http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html?74326
      

  2.   

    select 
    parsename(replace(s,';','.'),1),
    parsename(replace(s,';','.'),2),
    parsename(replace(s,';','.'),3),
    parsename(replace(s,';','.'),4)
    from A
      

  3.   

    access数据库建议去其他数据库版问问。
      

  4.   

    ACCESS:
    SELECT Left(col,InStr(col,";")-1) AS 表达式1, Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2, Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
    right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
    FROM tb;
      

  5.   

    将下面这三条语句在查询设计SQL窗口依次分别执行,你就能看到你想要的东西:
    create table tb(col varchar(20))
    --
    insert into tb(col) values('A1;A2;A3;A4')
    --
    SELECT Left(col,InStr(col,";")-1) AS 表达式1,
    Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2,
    Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
    right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
    FROM tb;
      

  6.   

    给你加一个保险,如果不是所有记录都能满足有三个分号,而查询又要保证不出错的话:
    SELECT col,Left(col,InStr(col,";")-1) AS 表达式1,
    Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2,
    Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
    right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
    FROM tb where len(col)-len(replace(col,";",""))=3;