zoukankan      html  css  js  c++  java
  • 对select into表复制的一点思考

    操作系统:Windows 2007

    数据库版本:SQL Server 2008 R2

      今天写存储过程遇到一个问题,用"Select 1 id,'Boss_he' into A"这样的SQL语句创建A表时,它的字段类型及字段长度是由select出来的字段决定的。

    当我们往A表插入一些字段较长的数据时,数据库就会提示”类型转换异常“等一些错误信息。

      "Select * into A From B"是我们经常用到的一种表复制语句,它实现的功能是创建A表,A表表结构和B表的表结构完全相同,并把B表的数据填充到A表。

    如果是这样的一条SQL,"SELECT 'Boss_he' name,0 comm,1000.00 sal INTO A",它创建A表的脚本如下:

    CREATE TABLE [dbo].[A](
    	[name] [VARCHAR](7) NOT NULL,
    	[comm] [INT] NOT NULL,
    	[sal] [NUMERIC](6, 2) NOT NULL
    ) ON [PRIMARY]
    

      可以看得出来,A表的字段类型及长度是根据Select 出来的字段决定的。假如,我希望A表的字段name的类型为VARCHAR,长度为20,字段comm的定义

    指定是NUMERIC(10,2),sal字段对应的是NUMERIC(20,7)。下面是实现代码的脚本:

    SELECT  CONVERT(VARCHAR(20), 'Boss_he') name ,
            CONVERT(NUMERIC(10, 2), 0) comm ,
            CONVERT(NUMERIC(20, 7), 1000) sal
    INTO    A 
    

      当然,也可以先创建A表,再用"insert into A select * from B"语句来复制B表的数据到A表。

  • 相关阅读:
    极大似然估计
    python模块的安装
    变异检测
    泰勒公式
    shell关于变量的操作
    Hadoop安装教程
    关于连接linux被拒
    靶向药
    层次聚类
    基因芯片原理
  • 原文地址:https://www.cnblogs.com/boss-he/p/4091245.html
Copyright © 2011-2022 走看看