select into 临时表再使用过程中所遇到的问题和相应的解决方案

原创 2007年10月11日 09:59:00

使用中发现 select into 临时表 很麻烦,下面是使用中发现的一些注意事项(一下以mssqlserver为例):

1,一般使用

create table person (id int ,name varchar(20),birthday datetime)

读取数据到临时表中 select * into #tb_tmp from person where ....
使用临时表中的数据 select name from #tb_tmp where id = 1
使用之后不要忘记删除临时表(drop table #tb_tmp),否则下次使用时会报错如:
消息 2714,级别 16,状态 6,第 1 行
There is already an object named '#tb_tmp' in the database.

2,常见问题
select  '' as col into #tb_tmp
会包如下错误:
消息 2731,级别 16,状态 1,第 2 行
Column 'col' has invalid width: 0.

解决以上问题有两种方法:
解决方案一,''->null
 select null as col into #tb_tmp
解决方案二,''->ltrim(' ') or ''->rtrim(' ')
 select rtrim(' ') as col into #tb_tmp 

解决方案一引发的问题:
插入问题:只能插入int数字或数字类字符串(其中插入带小数的数字,小数部分会被自动去除)
如果插入数字以外的字符串,如:insert into #tb_tmp values('asdfsadf')会报如下错误:
消息 245,级别 16,状态 1,第 3 行
Syntax error converting the varchar value 'asdfsadf' to a column of data type int.

解决方案二引发的问题:
插入问题:只能插入 "('空格数')"中指定空格数范围内数量的字符串,当字符串中个数大于括号中指定空格数时报如下错误:
消息 8152,级别 16,状态 9,第 2 行
String or binary data would be truncated.
The statement has been terminated.

总结:select into 所引发的问题不能很好解决,建议使用临时表前先定义临时表的完整结构,并再定义列时加上(COLLATE

DATABASE_DEFAULT)属性,否则某些系统中使用中文时会出现乱码. 

临时表与SELECT INTO、INSERT INTO SELECT

本文为其他两位作者作品的结合。 原链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/05/1526466.html http...
  • u013760453
  • u013760453
  • 2016-11-01 15:25:20
  • 6276

Select Into 与 Insert Into 两种临时表复制语句的区别

 1.  select * into destTbl from srcTbl2.  insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl...
  • daxia666
  • daxia666
  • 2010-04-06 18:26:00
  • 27906

利用SELECT INTO创建临时表

SELECT INTO创建临时表 SQL Server临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#)  打头;它们仅对当前的用户...
  • u014328353
  • u014328353
  • 2017-03-16 17:27:59
  • 715

把存储过程结果集SELECT INTO到临时表

把存储过程结果集SELECT INTO到临时表   在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种。   一. SELECT INTO  1. 使用se...
  • junboyboy
  • junboyboy
  • 2014-05-25 17:29:03
  • 22586

SELECT INTO在查询结果中创建新表或临时表

如果想在查询的结果(从一个表或者多个表)中创建新表,就需要使用SELECT INTO语句SELECT FirstName,LastName,Title INTO MyOtherContactsFROM...
  • liyifei21
  • liyifei21
  • 2011-06-26 20:10:00
  • 14514

SELECT INTO 临时表时,不能往同样的表INTO两遍

SELECT * INTO #temp FROM dbo.Orders WHERE OrderId=102803 SELECT * FROM #temp SELECT * INTO #te...
  • zoohouse
  • zoohouse
  • 2011-12-29 09:43:21
  • 1740

select into 临时表再使用过程中所遇到的问题和相应的解决方案

使用中发现 select into 临时表 很麻烦,下面是使用中发现的一些注意事项(一下以mssqlserver为例):1,一般使用create table person (id int ,name ...
  • xddouble
  • xddouble
  • 2007-10-11 09:59:00
  • 4004

MySQL select into临时表

Mysql sql语句实现复制一张表中的选中的字段到一张新表中去或者说 将表的查询结果存储到一张临时表里。 1.首先想到的是用select into,但是MYSQL不支持这一语法 ...
  • linybo
  • linybo
  • 2015-01-19 17:57:41
  • 7577

不使用临时表,仅使用select实现查询出多行常数

今天在做项目的时候,突然需要insert到数据库中多条记录,但这些记录必须用一条insert语句插入数据库,这时候你会说可以用insert into XXX select XXX句式,但更让人纠结的...
  • judyge
  • judyge
  • 2016-08-19 15:34:00
  • 1180
收藏助手
不良信息举报
您举报文章:select into 临时表再使用过程中所遇到的问题和相应的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)