tryDeclare @S Varchar(8000)
Select @S= ''
Select @S = ' Union All Select ''' + Name + ''' As Name, ' + Name + ' As Value From 表' From SysColumns Where ID = OBJECT_ID('表') Order By ColID
Select @S = Stuff(@S, 1, 10, '')
EXEC(@S)

解决方案 »

  1.   

    改下Declare @S Varchar(8000)
    Select @S= ''
    Select @S = @S + ' Union All Select ''' + Name + ''' As Name, ' + Name + ' As Value From 表' From SysColumns Where ID = OBJECT_ID('表') Order By ColID
    Select @S = Stuff(@S, 1, 10, '')
    EXEC(@S)
      

  2.   

    --創建測試環境
    Create Table 表
    (FID Varchar(10),
     FNo Varchar(10),
     FName Varchar(10))
    Insert 表 Select '1000',   '0101',     '电脑'
    GO
    --測試
    Declare @S Varchar(8000)
    Select @S= ''
    Select @S = @S + ' Union All Select ''' + Name + ''' As Name, ' + Name + ' As Value From 表' From SysColumns Where ID = OBJECT_ID('表') Order By ColID
    Select @S = Stuff(@S, 1, 10, '')
    EXEC(@S)
    GO
    --刪除測試環境
    Drop Table 表
    --結果
    /*
    Name Value
    FID 1000
    FNo 0101
    FName 电脑
    */
      

  3.   

    paoluo,你最后一种方法是针对固定列的,不适合我,上一种方法到是可以
      

  4.   

    但是也存在一种弊端,那就是我没有去很不想去破坏SysColumns这个表结构,不过分数还是给你们了哈哈,因为我想到了另外一种更好的方法,拿出来给大家参考一下,那就是自己定义一个2个表,一个是描述表的,另外一个是描述字段信息的,这样我不用去破坏SQL原有结构也可以自由发挥表设计器的强大功能,同事也可以根据个人喜好来定义表结构。
      

  5.   

    devclub(OSen) ( ) 信誉:99  2007-8-1 14:54:13  得分: 0  
     
     
       
    paoluo,你最后一种方法是针对固定列的,不适合我,上一种方法到是可以  
    ----------------其實我寫的都是一種方法,都是針對不是固定列的。我寫了測試環境,是讓你看看測試效果的。
      

  6.   

    devclub(OSen) ( ) 信誉:99  2007-8-1 14:58:46  得分: 0  
     
     
       
    但是也存在一种弊端,那就是我没有去很不想去破坏SysColumns这个表结构,不过分数还是给你们了哈哈,因为我想到了另外一种更好的方法,拿出来给大家参考一下,那就是自己定义一个2个表,一个是描述表的,另外一个是描述字段信息的,这样我不用去破坏SQL原有结构也可以自由发挥表设计器的强大功能,同事也可以根据个人喜好来定义表结构。  
     
    ----------------這一點,你又看錯了。我的語句沒有去破壞SysColumns的表结构,而是借用這個表查詢出列名而已,對SysColumns這個表沒有任何影響。
      

  7.   

    devclub(OSen) ( ) 信誉:99  2007-08-01 20:40:40  得分: 0  
     
     
       如果我字段值为字符串,你这个语句就会报错
      
     
    ----------------如果都是字符類型,沒有問題的,這個寫的就是針對字符串的。但是有數值型,會報錯,需要做類型轉換。
      

  8.   


    --創建測試環境
    Create Table 表
    (FID Int,
     FNo Varchar(10),
     FName Varchar(10))
    Insert 表 Select '1000',   '0101',     '电脑'
    GO
    --測試
    Declare @S Varchar(8000)
    Select @S= ''
    Select @S = @S + ' Union All Select ''' + Name + ''' As Name, Cast(' + Name + ' As Varchar) As Value From 表' From SysColumns Where ID = OBJECT_ID('表') Order By ColID
    Select @S = Stuff(@S, 1, 10, '')
    EXEC(@S)
    GO
    --刪除測試環境
    Drop Table 表
    --結果
    /*
    Name Value
    FID 1000
    FNo 0101
    FName 电脑
    */