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,全称Transact-SQL,是SQL(结构化查询语言)的扩展,主要用于Microsoft SQL Server数据库管理系统。T-SQL提供了SQL的标准功能,如数据定义(DDL)、数据操纵(DML)和数据控制(DCL),同时增加了更多的编程...
T-SQL提供了大量内置函数,如聚合函数(COUNT、SUM、AVG、MIN、MAX)、字符串函数(CONCAT、SUBSTRING、PATINDEX)、日期时间函数(DATEADD、DATEDIFF、GETDATE)等,这些函数可以帮助处理和转换数据。 以上只是T-...
这个题目不仅考察了对T-SQL基本语法的理解,还涉及到了循环控制、字符串操作以及数学逻辑的应用,对于提升SQL编程能力具有很好的实践意义。在实际工作中,类似的技巧可能被应用于生成动态报告、自定义数据格式化或...
4. **函数**:T-SQL提供了大量内置函数,如数学函数、字符串函数、日期时间函数等,如`RAND()`生成随机数,`LEN()`计算字符串长度,`GETDATE()`获取当前日期和时间。 5. **存储过程**:存储过程是预编译的T-SQL语句...
- **内置函数**:如数学函数、字符串函数、日期时间函数等,提供常见操作的便利。 - **用户自定义函数**:允许创建自己的函数,增强功能。 ### 8. 错误处理和事务管理 - **TRY...CATCH**:异常处理结构,捕获并...
在上述代码中,首先创建了一个临时表 #tmp_table,然后将逗号分隔的字符串拆分成一个个 ID,并将其插入到临时表中。接着,使用临时表进行更新操作,最后删除临时表。 此外,还可以使用 SQL Server 的函数来实现将...
本文将深入探讨T-SQL(Transact-SQL)在SQL Server中的应用,以及如何使用CTE(公共表表达式)进行递归查询,同时也会涉及如何通过自定义函数处理字符串分隔的问题。 首先,让我们从"T-SQL_FileShare_1_Preparation...
在给定的部分内容中,首先创建了一个临时表`#`用于存储一个递增的ID序列,然后通过一系列T-SQL命令实现了字符串的拆分。下面我们将逐步解析这些代码: ```sql if object_id('tempdb..#') is not null drop table # ...
- 字符串函数: 介绍如何使用`LEN`, `SUBSTRING`, `REPLACE`等函数处理字符串数据。 - 正则表达式: 讲解如何在T-SQL中使用正则表达式进行模式匹配。 - **Chapter 10: Working with Dates and Times** - 日期时间...
5. **函数**: T-SQL提供了丰富的内置函数,如聚合函数(SUM、AVG、COUNT等)、字符串函数(CONCAT、SUBSTRING等)、日期时间函数(GETDATE、DATEADD等),以及数学和转换函数等。 6. **存储过程**: 存储过程是预...
系统函数是由数据库系统提供的内置函数,用于实现特定的功能,如日期处理、字符串操作等。 - **日期函数**:如`GETDATE()`返回当前系统日期和时间,`DATEDIFF()`计算两个日期之间的差值。 - 示例:`SELECT ...
- **数据类型**:书中详细介绍了SQL Server支持的各种数据类型,包括数值型、字符串型、日期时间型等,并讲解了如何选择合适的数据类型来存储不同的数据。 - **变量和表达式**:解释了如何定义变量以及如何在T-SQL...
综上所述,在SQL Server 2008中解析JSON字符串并插入到临时表中需要借助一些字符串处理技巧,或者自定义的存储过程。尽管这种方法相对繁琐,但在旧版本的SQL Server中,这是处理JSON数据的一种可行方法。
了解如何编写高效的T-SQL语句,避免全表扫描,合理使用JOIN操作,以及掌握何时使用临时表或表变量,都是提升性能的关键。 数据类型的差异是SQL编程中的基础概念,不同的数据类型适用于存储不同类型的信息,如整数、...
**系统内置函数**是预定义的函数,可以直接在T-SQL语句中调用,用于执行各种特定任务,如字符串操作、日期时间处理、数学计算等。了解和掌握这些函数的使用,可以极大提升数据库操作的效率。 学习T-SQL的目标不仅...
SQL Server 2008没有专门的文件读取命令,因此需要利用T-SQL语言中内置的EXECUTE Transact-SQL语句来向链接服务器发送命令,或者执行命令字符串、系统存储过程等。特别是系统扩展存储过程sys.xp_dirtree可以非常方便...
综上所述,这段代码主要展示了如何使用T-SQL创建临时表、插入数据、使用数据窗口函数以及CTE等高级特性来进行数据分析和处理。这些技术是T-SQL中非常重要的组成部分,对于数据库开发人员来说掌握它们至关重要。
在SQL Server 2008中,处理字符串的拆分是一项常见的任务,特别是在处理列表或者多值字段时。本文将详细讲解如何拆分字符串,并提供一个具体的实例来演示这一过程。 首先,我们要解决的问题是如何将一个包含多个值...
10. **安全性**:在处理敏感数据时,确保遵循最佳安全实践,如使用参数化查询防止SQL注入,及时清理不再需要的连接字符串等。 总的来说,从DataSet保存数据到T-SQL表涉及数据库连接、SQL命令构造、数据遍历、事务...
4. **处理最后一个元素**:当循环结束后,剩余的字符串就是最后一个元素,也需要被插入到临时表中。 ```sql INSERT INTO @T VALUES (@i, @str); ``` 5. **查询结果**:最后,我们可以查询临时表来查看拆分的结果...