如何实现SQLServer数据库临时表的创建?
小标 2018-07-06 来源 : 阅读 1348 评论 0

摘要:本文主要向大家介绍了如何实现SQLServer数据库临时表的创建,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。

本文主要向大家介绍了如何实现SQLServer数据库临时表的创建,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助。

以下的文章主要是对SQL Server临时表的创建的实际操作步骤,以及在实际操作中我们要用到的实际应用代码的介绍,我在一个信誉度很好的网站找到一个关于其相关内容今天拿出来供大家分享。

1. Create Table #Test(a int) 

如果传来的SELECT语句不是以'select'开头,自动修改

1. If Left(Lower(Ltrim(@Select_Command)),6) <> 'select' Select @Select_Command = 'Select ' + @Select_Command 

将开头‘SELECT’去掉

1. Select @Select_Command_Temp = Lower(Ltrim(@Select_Command))  

2. If Left(@Select_Command_Temp,6) = 'select' Select @Select_Command_Temp = Right(@Select_Command_Temp,Len(@Select_Command_Temp) - 7) 

取各保留字位置,以便获得表的列表

1. Select @From_Pos = CHARINDEX(' from ',@Select_Command_Temp)  

2. Select @Where_Pos = CHARINDEX(' where ',@Select_Command_Temp)  

3. Select @Having_Pos = CHARINDEX(' having ',@Select_Command_Temp)  

4. Select @Groupby_Pos = CHARINDEX(' groupby ',@Select_Command_Temp)  

5. Select @Orderby_Pos = CHARINDEX(' orderby ',@Select_Command_Temp)  

6. If @Where_Pos > 0 Select @Temp_Pos = @Where_Pos  

7. If @Having_Pos > 0 And @Having_Pos < @Temp_Pos Select @Temp_Pos = @Having_Pos  

8. If @Groupby_Pos > 0 And @Groupby_Pos < @Temp_Pos Select @Temp_Pos = @Groupby_Pos  

9. If @Orderby_Pos > 0 And @Orderby_Pos < @Temp_Pos Select @Temp_Pos = @Orderby_Pos  

10.  

SQL Server临时表的创建中取表列表

1. If @Temp_Pos > 0  

2. Begin  

3. Select @Table_List = SUBSTRING(@Select_Command_Temp,@From_Pos + 6 ,@Temp_Pos - @From_Pos - 1)  

4. End  

5. Else  

6. Begin  

7. Select @Table_List = SUBSTRING(@Select_Command_Temp,@From_Pos + 6 ,Len(@Select_Command_Temp) - @From_Pos - 1)  

8. End  

9. Select @Column_Syntax = '' 

10.  

只列出栏位

1. Select @Select_Command_Temp = Left(@Select_Command_Temp,@From_Pos - 1)  

2. While Len(@Select_Command_Temp) > 0   

3. Begin 

取逗号位置

1. Select @Temp_Pos = CHARINDEX(',',@Select_Command_Temp) 

初次取栏位名称

1. If @Temp_Pos > 0  

2. Begin  

3. Select @Column_Name = Left(@Select_Command_Temp,@Temp_Pos - 1)  

4. End  

5. Else  

6. Begin  

7. Select @Column_Name = @Select_Command_Temp  

8. End 

取表名和栏位名(可能是‘*’)

1. If CHARINDEX('.',@Column_Name) > 0  

2. Begin  

3. Select @Table_Name = Left(@Column_Name,CHARINDEX('.',@Column_Name) - 1)  

4. Select @Column_Name = Right(@Column_Name,Len(@Column_Name) - CHARINDEX('.',@Column_Name))  

5. End   

6. Else  

7. Begin  

8. Select @Table_Name = @Table_List  

9. End 

栏位出现'*'

1. If CHARINDEX('*',@Column_Name) > 0  

2. Begin  

3. Select @Column_Name = '' 

4. Select @Loop_Seq = 1 

SQL Server临时表的创建中我们要取栏位个数

1. Select @Column_Count = Count(*)  

2. From SysColumns  

3. Where Id = Object_Id(@Table_name)  

4. While @Loop_Seq <= @Column_Count  

5. Begin 

取栏位名称,栏位类型,长度,精度,小数位

1. Select @Column_Name_Temp = SysColumns.Name,  

2. @Column_Type_Temp = Lower(SysTypes.Name),  

3. @Column_Length_Temp = SysColumns.Length,  

4. @Column_Xprec_Temp = SysColumns.Xprec,  

5. @Column_Xscale_Temp = SysColumns.Xscale  

6. From SysColumns,SysTypes  

7. Where SysColumns.Id = Object_Id(@Table_name) And  

8. SysColumns.Colid = @Loop_Seq And  

9. SysColumns.XuserType = SysTypes.XuserType 

形成栏位语法表达式

1. Select @Column_Syntax_Temp = Case When @Column_Type_Temp In ('datetime','image','int') Then @Column_Name_Temp + ' ' + @Column_Type_Temp 

本文由职坐标整理并发布,希望对同学们学习SQL Server有所帮助,更多内容请关注职坐标数据库SQL Server数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程