`
seawavenews
  • 浏览: 231735 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

t-sql建临时表,处理字符串

阅读更多
declare  @str1  varchar(100),  @str2  varchar(100),  @str3  varchar(100),@str  varchar(500)  
set  @str1=''aada,bbbf,ccc,''  
set  @str2=''ddd,aaaaaa,fdsa''  
set  @str3=''vvvvvv,aaabbbb''  
set  @str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''  
现在:  
把@str1拆分成aada,bbbf,ccc三个元素,其中bbbf在@str里出现过  
把@str2拆分成ddd,aaaaaa,fdsa三个元素,其中ddd在@str里也出现过  
把@str3拆分成vvvvvv,aaabbbb两个元素,但是没有任何元素在@str里出现过  
请问我怎么用程序实现这样一个结果  
其实实际问题是这样的  
我有一个数据表,里有个字段classid  
其中一条纪录的数据,比如是:aada,bbbf,ccc  
现在要得到这样一个结果集,将classid按照上面的拆分方式拆分,得到的数据,在@str里出现过(@str是外界传过来的一个参数)的记录找出来,请问我该怎么做?  
---------------------------------------------------------------  
 
declare  @str  varchar(500)  
 
set  @str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''  
 
create  table  你的表  (classid  varchar(100))  
insert  你的表  values(''aada,bbbf,ccc'')  
insert  你的表  values(''ddd,aaaaaa,fdsa'')  
insert  你的表  values(''vvvvvv,aaabbbb'')  
 
create  table  #临时表(a  varchar(100))  
declare  @aaa  varchar(8000)  
set  @aaa=''insert  #临时表  select  *  from  (select  ''''''+replace(@str,'','',''''''as  str  union  all  select  '''''')+'''''')  a''    
exec(@aaa)  
 
select  *  from  你的表  where  exists  (select  1  from  #临时表  where  '',''+你的表.classid+'',''  like  ''%,''+a+'',%'')  
go  
 
drop  table  你的表,#临时表  
---------------------------------------------------------------  
 
create  table  #t(  
id  varchar(10))  
declare  @str  varchar(300)  
set  @str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''  
declare  @i  int  
declare  @len  int  
set  @i  =  1  
set  @str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''+'',''  
while  @i  <  len(@str)  
begin  
   insert  #t  select  substring(@str,@i,charindex('','',@str,@i)-@i)  
   set  @i  =  charindex('','',@str,@i)+1  
end  
select  *  from  数据表  A,#t  B  where  charindex(B.id,  A.classid)  >  0  
 
 
---------------------------------------------------------------  
 
create  table  t  (classid  varchar(100))  
insert  t  values(''aada,bbbf,ccc'')  
insert  t  values(''ddd,aaaaaa,fdsa'')  
insert  t  values(''vvvvvv,aaabbbb'')  
 
 
 
 
declare  @str  varchar(500)  
 
set  @str=''fds,bbbf,eee,ddd,fff,hhhfg,dddde''  
 
select  top  500  identity(int,1,1)  as  id  into  #t  from  sysobjects    
 
select  distinct  A.*  from  t  A,  
(  select  substring('',''+string+'','',id+1,charindex('','','',''+string+'','',id+1)-id-1)  as  string    
   from  (select  @str  as  string)  B,#t  c    
   where  substring('',''+string+'','',id,8000)  like  '',_%'')  D  
where  charindex('',''+string+'','','',''+classid+'','')>0  
 
drop  table  #t  
 
把#t建成固定表,更快。
 
分享到:
评论

相关推荐

    T-SQL课件(介绍了T-SQL的一些基本知识)

    T-SQL,全称Transact-SQL,是SQL(结构化查询语言)的扩展,主要用于Microsoft SQL Server数据库管理系统。T-SQL提供了SQL的标准功能,如数据定义(DDL)、数据操纵(DML)和数据控制(DCL),同时增加了更多的编程...

    T-SQL示例大全(全是T-SQL语句 )

    T-SQL提供了大量内置函数,如聚合函数(COUNT、SUM、AVG、MIN、MAX)、字符串函数(CONCAT、SUBSTRING、PATINDEX)、日期时间函数(DATEADD、DATEDIFF、GETDATE)等,这些函数可以帮助处理和转换数据。 以上只是T-...

    T-SQL打印杨辉三角

    这个题目不仅考察了对T-SQL基本语法的理解,还涉及到了循环控制、字符串操作以及数学逻辑的应用,对于提升SQL编程能力具有很好的实践意义。在实际工作中,类似的技巧可能被应用于生成动态报告、自定义数据格式化或...

    t-sql基础教程

    4. **函数**:T-SQL提供了大量内置函数,如数学函数、字符串函数、日期时间函数等,如`RAND()`生成随机数,`LEN()`计算字符串长度,`GETDATE()`获取当前日期和时间。 5. **存储过程**:存储过程是预编译的T-SQL语句...

    MicroSoft Sql Server2005:T-Sql查询

    - **内置函数**:如数学函数、字符串函数、日期时间函数等,提供常见操作的便利。 - **用户自定义函数**:允许创建自己的函数,增强功能。 ### 8. 错误处理和事务管理 - **TRY...CATCH**:异常处理结构,捕获并...

    SQLServer逗号分隔的字符串转换成表

    在上述代码中,首先创建了一个临时表 #tmp_table,然后将逗号分隔的字符串拆分成一个个 ID,并将其插入到临时表中。接着,使用临时表进行更新操作,最后删除临时表。 此外,还可以使用 SQL Server 的函数来实现将...

    T-SQL_FileShare

    本文将深入探讨T-SQL(Transact-SQL)在SQL Server中的应用,以及如何使用CTE(公共表表达式)进行递归查询,同时也会涉及如何通过自定义函数处理字符串分隔的问题。 首先,让我们从"T-SQL_FileShare_1_Preparation...

    sql2000字符串分割,字符串拆分

    在给定的部分内容中,首先创建了一个临时表`#`用于存储一个递增的ID序列,然后通过一系列T-SQL命令实现了字符串的拆分。下面我们将逐步解析这些代码: ```sql if object_id('tempdb..#') is not null drop table # ...

    SQL Server T-SQL Recipes, 4th Edition

    - 字符串函数: 介绍如何使用`LEN`, `SUBSTRING`, `REPLACE`等函数处理字符串数据。 - 正则表达式: 讲解如何在T-SQL中使用正则表达式进行模式匹配。 - **Chapter 10: Working with Dates and Times** - 日期时间...

    Microsoft SQL Server 2012 T-SQL Fundamentals(英文版)

    5. **函数**: T-SQL提供了丰富的内置函数,如聚合函数(SUM、AVG、COUNT等)、字符串函数(CONCAT、SUBSTRING等)、日期时间函数(GETDATE、DATEADD等),以及数学和转换函数等。 6. **存储过程**: 存储过程是预...

    T-SQL流程控制和函数

    系统函数是由数据库系统提供的内置函数,用于实现特定的功能,如日期处理、字符串操作等。 - **日期函数**:如`GETDATE()`返回当前系统日期和时间,`DATEDIFF()`计算两个日期之间的差值。 - 示例:`SELECT ...

    SQL SERVER 2008 技术内幕 T-SQL查询 英文版

    - **数据类型**:书中详细介绍了SQL Server支持的各种数据类型,包括数值型、字符串型、日期时间型等,并讲解了如何选择合适的数据类型来存储不同的数据。 - **变量和表达式**:解释了如何定义变量以及如何在T-SQL...

    Sqlserver2008解析json字符串新增到临时表中

    综上所述,在SQL Server 2008中解析JSON字符串并插入到临时表中需要借助一些字符串处理技巧,或者自定义的存储过程。尽管这种方法相对繁琐,但在旧版本的SQL Server中,这是处理JSON数据的一种可行方法。

    Transact-SQL权威指南

    了解如何编写高效的T-SQL语句,避免全表扫描,合理使用JOIN操作,以及掌握何时使用临时表或表变量,都是提升性能的关键。 数据类型的差异是SQL编程中的基础概念,不同的数据类型适用于存储不同类型的信息,如整数、...

    x14-2014-2015学年02期-数据库应用技术-项目10-t-sql基础知识x.ppt

    **系统内置函数**是预定义的函数,可以直接在T-SQL语句中调用,用于执行各种特定任务,如字符串操作、日期时间处理、数学计算等。了解和掌握这些函数的使用,可以极大提升数据库操作的效率。 学习T-SQL的目标不仅...

    T-SQL语言的用户文件识别与检索.pdf

    SQL Server 2008没有专门的文件读取命令,因此需要利用T-SQL语言中内置的EXECUTE Transact-SQL语句来向链接服务器发送命令,或者执行命令字符串、系统存储过程等。特别是系统扩展存储过程sys.xp_dirtree可以非常方便...

    t-sql整理实例小书

    综上所述,这段代码主要展示了如何使用T-SQL创建临时表、插入数据、使用数据窗口函数以及CTE等高级特性来进行数据分析和处理。这些技术是T-SQL中非常重要的组成部分,对于数据库开发人员来说掌握它们至关重要。

    sqlserver2008 拆分字符串

    在SQL Server 2008中,处理字符串的拆分是一项常见的任务,特别是在处理列表或者多值字段时。本文将详细讲解如何拆分字符串,并提供一个具体的实例来演示这一过程。 首先,我们要解决的问题是如何将一个包含多个值...

    How to save data from a DataSet into a T-SQL table

    10. **安全性**:在处理敏感数据时,确保遵循最佳安全实践,如使用参数化查询防止SQL注入,及时清理不再需要的连接字符串等。 总的来说,从DataSet保存数据到T-SQL表涉及数据库连接、SQL命令构造、数据遍历、事务...

    Sql拆分字符串

    4. **处理最后一个元素**:当循环结束后,剩余的字符串就是最后一个元素,也需要被插入到临时表中。 ```sql INSERT INTO @T VALUES (@i, @str); ``` 5. **查询结果**:最后,我们可以查询临时表来查看拆分的结果...

Global site tag (gtag.js) - Google Analytics