首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • zlp321002 请进,关于昨天的问题
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:36:31 楼主
    http://topic.csdn.net/u/20080709/10/f622f9cb-ccba-449a-b7d1-86d5a86d2648.html
    就是创建表的顺序的问题,例如传入3,1,2列它的顺序也是1,2,3
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:40:181楼 得分:0
    今天没见他
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:42:332楼 得分:0
    传入1,3,d得到一个临时表的结构是A,C,E

    ---

    d -- E??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:45:393楼 得分:0
    不是,当传入号为第3,2,1列,创建表的顺序应该是c,b,a但是现在无论你是传1,2,3还是3,2,1顺序都是a,b,c
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:47:354楼 得分:0
    --SQL Server 2000 的(它只是系统表名称不一样)
    DECLARE @S VARCHAR(2000)
    SET @S=''
    SELECT @S=@S+NAME+
    +SPACE(20-LEN(NAME))+
        CASE WHEN xtype=34 THEN 'image'
          WHEN xtype=35 THEN 'text'
          WHEN xtype=36 THEN 'uniqueidentifier'
          WHEN xtype=48 THEN 'tinyint'
          WHEN xtype=52 THEN 'smallint'
          WHEN xtype=56 THEN 'int'
          WHEN xtype=58 THEN 'smalldatetime'
          WHEN xtype=59 THEN 'real'
          WHEN xtype=60 THEN 'money'
          WHEN xtype=61 THEN 'datetime'
          WHEN xtype=62 THEN 'float'
          WHEN xtype=98 THEN 'sql_variant'
          WHEN xtype=99 THEN 'ntext'
          WHEN xtype=104 THEN 'bit'
          WHEN xtype=106 THEN 'decimal'
          WHEN xtype=108 THEN 'numeric'
          WHEN xtype=122 THEN 'smallmoney'
          WHEN xtype=127 THEN 'bigint'
          WHEN xtype=165 THEN 'varbinary'
          WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
          WHEN xtype=173 THEN 'binary'
          WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
          WHEN xtype=189 THEN 'timestamp'
          WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
          WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
          WHEN xtype=241 THEN 'xml'
          WHEN xtype=231 THEN 'sysname' END+','+CHAR(10)
    FROM SYSCOLUMNS WHERE id=OBJECT_ID('Comment')
    AND colorder IN (1,2,3
    )
    SET @S='CREATE TABLE #('+CHAR(13)+LEFT(@S,LEN(@S)-2)+CHAR(13)+')'
    PRINT @S

    --SQL Server 2000 的(它只是系统表名称不一样)
    DECLARE @S VARCHAR(2000)
    SET @S=''
    SELECT @S=@S+NAME+
    +SPACE(20-LEN(NAME))+
        CASE WHEN xtype=34 THEN 'image'
          WHEN xtype=35 THEN 'text'
          WHEN xtype=36 THEN 'uniqueidentifier'
          WHEN xtype=48 THEN 'tinyint'
          WHEN xtype=52 THEN 'smallint'
          WHEN xtype=56 THEN 'int'
          WHEN xtype=58 THEN 'smalldatetime'
          WHEN xtype=59 THEN 'real'
          WHEN xtype=60 THEN 'money'
          WHEN xtype=61 THEN 'datetime'
          WHEN xtype=62 THEN 'float'
          WHEN xtype=98 THEN 'sql_variant'
          WHEN xtype=99 THEN 'ntext'
          WHEN xtype=104 THEN 'bit'
          WHEN xtype=106 THEN 'decimal'
          WHEN xtype=108 THEN 'numeric'
          WHEN xtype=122 THEN 'smallmoney'
          WHEN xtype=127 THEN 'bigint'
          WHEN xtype=165 THEN 'varbinary'
          WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
          WHEN xtype=173 THEN 'binary'
          WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
          WHEN xtype=189 THEN 'timestamp'
          WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
          WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
          WHEN xtype=241 THEN 'xml'
          WHEN xtype=231 THEN 'sysname' END+','+CHAR(10)
    FROM SYSCOLUMNS WHERE id=OBJECT_ID('Comment')
    AND colorder IN (3,2,1
    )
    SET @S='CREATE TABLE #('+CHAR(13)+LEFT(@S,LEN(@S)-2)+CHAR(13)+')'
    PRINT @S
    得到的顺序都是一样的

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:48:385楼 得分:0
    我要的当传入 1,2,3得到A,B,C.....传入3,2,1应该得到C,B,A
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:52:186楼 得分:0
    SQL code
    DECLARE @S VARCHAR(2000) SET @S='' SELECT @S=@S+NAME+ +SPACE(20-LEN(NAME))+ CASE WHEN xtype=34 THEN 'image' WHEN xtype=35 THEN 'text' WHEN xtype=36 THEN 'uniqueidentifier' WHEN xtype=48 THEN 'tinyint' WHEN xtype=52 THEN 'smallint' WHEN xtype=56 THEN 'int' WHEN xtype=58 THEN 'smalldatetime' WHEN xtype=59 THEN 'real' WHEN xtype=60 THEN 'money' WHEN xtype=61 THEN 'datetime' WHEN xtype=62 THEN 'float' WHEN xtype=98 THEN 'sql_variant' WHEN xtype=99 THEN 'ntext' WHEN xtype=104 THEN 'bit' WHEN xtype=106 THEN 'decimal' WHEN xtype=108 THEN 'numeric' WHEN xtype=122 THEN 'smallmoney' WHEN xtype=127 THEN 'bigint' WHEN xtype=165 THEN 'varbinary' WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')' WHEN xtype=173 THEN 'binary' WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')' WHEN xtype=189 THEN 'timestamp' WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')' WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')' WHEN xtype=241 THEN 'xml' WHEN xtype=231 THEN 'sysname' END+','+CHAR(10) FROM SYSCOLUMNS a, ( select 3 as colorder,1 as id union select 2,2 union select 1,3 ) b WHERE a.id=OBJECT_ID('sysobjects') and a.colorder = b.colorder order by b.id SET @S='CREATE TABLE #('+CHAR(13)+LEFT(@S,LEN(@S)-2)+CHAR(13)+')' PRINT @S /* CREATE TABLE #( xtype char(2), id int, name nvarchar(256) ) */ SET @S='' SELECT @S=@S+NAME+ +SPACE(20-LEN(NAME))+ CASE WHEN xtype=34 THEN 'image' WHEN xtype=35 THEN 'text' WHEN xtype=36 THEN 'uniqueidentifier' WHEN xtype=48 THEN 'tinyint' WHEN xtype=52 THEN 'smallint' WHEN xtype=56 THEN 'int' WHEN xtype=58 THEN 'smalldatetime' WHEN xtype=59 THEN 'real' WHEN xtype=60 THEN 'money' WHEN xtype=61 THEN 'datetime' WHEN xtype=62 THEN 'float' WHEN xtype=98 THEN 'sql_variant' WHEN xtype=99 THEN 'ntext' WHEN xtype=104 THEN 'bit' WHEN xtype=106 THEN 'decimal' WHEN xtype=108 THEN 'numeric' WHEN xtype=122 THEN 'smallmoney' WHEN xtype=127 THEN 'bigint' WHEN xtype=165 THEN 'varbinary' WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')' WHEN xtype=173 THEN 'binary' WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')' WHEN xtype=189 THEN 'timestamp' WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')' WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')' WHEN xtype=241 THEN 'xml' WHEN xtype=231 THEN 'sysname' END+','+CHAR(10) FROM SYSCOLUMNS a, ( select 1 as colorder,1 as id union select 2,2 union select 3,3 ) b WHERE a.id=OBJECT_ID('sysobjects') and a.colorder = b.colorder order by b.id SET @S='CREATE TABLE #('+CHAR(13)+LEFT(@S,LEN(@S)-2)+CHAR(13)+')' PRINT @S /* CREATE TABLE #( name nvarchar(256), id int, xtype char(2) ) */
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 16:53:097楼 得分:0
    借助中间表来做
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 17:01:248楼 得分:0
    我传入的连接是动态得出的,in(是由select id from colid),这样怎么做
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 17:11:059楼 得分:0
    create table tmp(id int identity(1,1),colid int)
    go
    insert into tmp(colid) select id from colid
    go

    DECLARE @S VARCHAR(2000)
    SET @S=''
    SELECT @S=@S+NAME+
    +SPACE(20-LEN(NAME))+
        CASE WHEN xtype=34 THEN 'image'
          WHEN xtype=35 THEN 'text'
          WHEN xtype=36 THEN 'uniqueidentifier'
          WHEN xtype=48 THEN 'tinyint'
          WHEN xtype=52 THEN 'smallint'
          WHEN xtype=56 THEN 'int'
          WHEN xtype=58 THEN 'smalldatetime'
          WHEN xtype=59 THEN 'real'
          WHEN xtype=60 THEN 'money'
          WHEN xtype=61 THEN 'datetime'
          WHEN xtype=62 THEN 'float'
          WHEN xtype=98 THEN 'sql_variant'
          WHEN xtype=99 THEN 'ntext'
          WHEN xtype=104 THEN 'bit'
          WHEN xtype=106 THEN 'decimal'
          WHEN xtype=108 THEN 'numeric'
          WHEN xtype=122 THEN 'smallmoney'
          WHEN xtype=127 THEN 'bigint'
          WHEN xtype=165 THEN 'varbinary'
          WHEN xtype=167 THEN 'varchar'+'('+LTRIM(length)+')'
          WHEN xtype=173 THEN 'binary'
          WHEN xtype=175 THEN 'char'+'('+LTRIM(length)+')'
          WHEN xtype=189 THEN 'timestamp'
          WHEN xtype=231 THEN 'nvarchar'+'('+LTRIM(length)+')'
          WHEN xtype=239 THEN 'nchar'+'('+LTRIM(length)+')'
          WHEN xtype=241 THEN 'xml'
          WHEN xtype=231 THEN 'sysname' END+','+CHAR(10)
    FROM SYSCOLUMNS a,
    tmp b
    WHERE a.id=OBJECT_ID('sysobjects')  and a.colorder = b.colid order by b.id

    SET @S='CREATE TABLE #('+CHAR(13)+LEFT(@S,LEN(@S)-2)+CHAR(13)+')'
    PRINT @S
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-10 19:57:2210楼 得分:0
    引用 5 楼 zhouguoguang 的回复:
    我要的当传入 1,2,3得到A,B,C.....传入3,2,1应该得到C,B,A

    那你得知道它的顺序,然后取数据的时候Order by 它的顺序...
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved