如果现有表A,列名A_id,A_name
数据是这样子的: 
               A_id       A_name 
               1      a,b:001,c:002,d:003 
               2      tome,jack:110,marry:111, 请问:查询出来的结果显示要是这样子的:无列名    无列名 
                                        b      001 
                                   c      002 
                                   d      003 
sql语句怎样写呢?

解决方案 »

  1.   

    也就是说:select ......... from A where A_id=1
    查询出来后显示的结果是这样子的(查询出来后显示两列):b  001
                                                  c  002
                                                  d  003
                      
      

  2.   

    如果根据A_id=2来查询的话 
    显示的结果就是:jack     110
                  marry    111
      

  3.   

    如果根据A_id=2来查询的话 
    显示的结果就是:jack     110
                  marry    111
      

  4.   

    是这样:
    b:001-->b 001
    c:002-->c 002
    d:003-->d 003
    ... 
      

  5.   

    --> 测试数据: a
    create table a(A_id int,A_name varchar(50))
    insert into a
    select 1,'a,b:001,c:002,d:003' union all
    select 2,'tome,jack:110,marry:111'
    create proc wsp
    @a_id int
    as
    declare @sql varchar(1000),@val varchar(100)
    declare @t table(name varchar(10),value varchar(20))
    select @sql=a_name+',' from a where a_id=@a_id
    while(charindex(',',@sql)>0)
    begin
    set @val = left(@sql,charindex(',',@sql)-1)
    print @val
    if(charindex(':',@val)>0)
    insert into @t select left(@val,charindex(':',@val)-1),substring(@val,charindex(':',@sql)+1,len(@val))
    set @sql=substring(@sql,charindex(',',@sql)+1,len(@sql))
    end
    select * from @t
    go
    exec wsp 1
      

  6.   

    如果现有表A,列名A_id,A_name 
    数据是这样子的: 
                  A_id      A_name 
                  1      a,b:001,c:002,d:003 
                  2      tome,jack:110,marry:111, 请问:查询出来的结果显示要是这样子的:无列名    无列名 
                                            b      001 
                                      c      002 
                                      d      003 
    这里A_name 的数据类型为varchar(30),这样的话:
    declare @varA_name varchar(30),@var_1 char(1),@var_2 char(3)
    set @varA_name = select A_name form A where A_id=1
    这样之后,再对字符串变量@varA_name进行处理,有很多函数,如left(),right()等等字符串函数进行处理!
    select @var_1,@var_2
    select @var_1,@var_2
    select @var_1,@var_2
      

  7.   

    CREATE TABLE test34( A_id  int,    A_name varchar(40))
    INSERT test34 SELECT          1      ,'a,b:001,c:002,d:003' 
    UNION ALL SELECT              2      ,'tome,jack:110,marry:111' 
    goCreate  FUNCTION getA_name(@a_name varchar(100))
    RETURNS @a table(col1 varchar(20),col2 varchar(20))
    AS
    BEGIN
    DECLARE @c varchar(100)
    DECLARE @c1 varchar(100)
    SET @c=stuff(@a_name,1,charindex(',',@a_name),'')+',' WHILE len(@c)>0
    BEGIN
    SET @c1=left(@c,charindex(',',@c)-1)
    INSERT @a SELECT left(@c1,charindex(':',@c1)-1),stuff(@c1,1,charindex(':',@c1),'')
    SET @c=replace(@c,@c1+',','')
    IF @c=',' SET @c=''
    END
    return
    END
    go
    master..xp_execresultset 'select ''select * from dbo.geta_name(''''''+a_name+'''''')'' from test34 where a_id=1',N'test'--result
    /*col1                 col2                 
    -------------------- -------------------- 
    b                    001
    c                    002
    d                    003*/