一个表中有这样一组数据 t_test
t_id t_flag
1 24,25,26
2 24,26,45,56
3 12,24,56
4 11,75,86
5 14,75,84
查找t_flag中有24的数据集合,正确得结果为
t_id t_flag
1 24,25,26
2 24,26,45,56
3 12,24,56
或者在t_flag有56的数据集合,正确结果为
2 24,26,45,56
3 12,24,56
如下是我的实现方法(不知道是否还有更好得方法,望指点)
1.把t_flag字段中的数据用‘,’分割,取得长度,该函数来自网络
CREATE function Get_StrArrayLength
(
@str varchar(1024), --要分割的字符串
@split varchar(10) --分隔符号
)
returns int
as
begin
declare @location int
declare @start int
declare @length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while @location <>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return @length
end
----
CREATE function Get_StrArrayStrOfIndex
(
@str varchar(1024), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素
)
returns varchar(1024)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location =0 select @location =len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
return substring(@str,@start,@location-@start)
end
---------------
CREATE procedure pro_test
(@t_id int)
as
begin
declare @temp table
( tid int,
tflag varchar(100))
declare @num int,@nflag varchar(200)
declare @next int,@str_input varchar(100),@length int
declare cur1 cursor
for select * from T_Test
open cur1
fetch cur1 into @num,@nflag
select * from dbo.T_Test
while @@fetch_status=0
begin
set @next=1
set @str_input=@t_id
set @length=dbo.Get_StrArrayLength(@nflag,',')
while @next<=@length
begin
if @str_input=dbo.Get_StrArrayStrOfIndex(@nflag,',',@next)
begin
insert into @temp values(@num,@nflag)
set @next=@next+1
end
else
set @next=@next+1
end
fetch next from cur1 into @num,@nflag
end
close cur1
DEALLOCATE cur1
select * from @temp
end
GO
相关推荐
以上就是使用VB.NET处理SQL数组参数的基本步骤。这种做法允许你在一次数据库调用中处理多个ID,提高了效率。但要注意,如果数组过大,可能会导致SQL语句过长,超出数据库允许的长度限制。在这种情况下,你可能需要...
- PL/SQL数组:在PL/SQL中,数组是一种可以存储同一类型数据的集合,提供了批量操作数据的能力。 - 定义数组:学习如何声明并初始化数组,以及指定数组的大小和元素类型。 - 数组操作:包括赋值、索引访问、遍历...
Spark SQL是一款强大的大数据处理工具,它提供了对JSON数据的内置支持,使得在处理JSON格式的数据时更加便捷。本文将详细介绍Spark SQL操作JSON字段的几个关键函数:get_json_object、from_json 和 to_json,以及...
在Oracle数据库的PL/SQL环境中,联合数组(Varying Array)是一种特殊的变量类型,它允许程序员存储一组相同类型的元素,这些元素可以是数值、字符串或其他复杂的数据类型。联合数组在PL/SQL中扮演着重要角色,特别...
'仿制简单的SQL查询语句,用于对二维数组的查询 '参照SQL语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] ' '实现功能: ' 依条件设置查询数组,返回包含查询字段(或全部字段)...
尽管SQL Server本身并不直接支持数组参数,但可以通过一些技巧来模拟这种功能。以下将详细讲解如何在SQL存储过程中处理参数数组。 1. **使用Table-Valued Parameters (TVP)** TVP是SQL Server 2008引入的一种特性...
Ø 6.SQL语法支持 Ø 7.向量化引擎 Ø 8.实时数据更新 Ø 9.索引 Ø 10.适合在线查询 Ø 11.支持近似预估计算 Ø 12.支持嵌套的数据结构 Ø 支持数组作为数据类型 Ø 13.支持限制查询复杂性以及...
"在SQL Server中实现数据的数组式读取" 标题:“在SQL Server中实现数据的数组式读取” 描述:在SQL Server中实现数据的数组式读取.pdf 标签:“SQL 数据库 数据处理 参考文献 专业指导” 在SQL Server中实现...
索引数组,也称为PL/SQL数组,是最基本的集合类型。它们类似于C语言中的数组,拥有固定的大小,并且元素按照数字索引进行访问。索引数组的元素类型可以是任何PL/SQL类型,包括复合类型。当创建一个索引数组时,必须...
1. **PL/SQL数组类型**:在PL/SQL中,数组是一种可以存储同类型数据集合的数据结构。你可以定义固定大小或变大小的数组,并通过索引来访问和操作数组元素。例如,你可以创建一个存储员工ID的数组,并一次性处理多个...
分解数组的sqlserver的t-sql语句
1、首先,要使用数组生成SQL语句,需要先确定SQL语句的类型,比如SELECT,INSERT,UPDATE等。 2、如果是SELECT语句,需要先定义要查询的字段,比如:$fields=array('name','age'); 3、然后定义要查询的表名,比如...
集合(PL-SQL数组或关联数组)可以存储多个相同类型的元素,方便批量处理。 9. **包(PACKAGE)** 包是PL-SQL的一个高级特性,它允许将相关的对象(如过程、函数、类型等)打包在一起,提供更好的模块化和封装性。...
sql通用函数, 解析字符串为数组,根据索引,获得数组的值
3. **PL/SQL变量和数组**:理解变量的声明、初始化、赋值和传递机制,以及如何使用PL/SQL数组来处理集合数据。 4. **游标**:在PL/SQL中,游标用于检索单行记录,它是处理查询结果集的一种方法。学习如何声明、打开...
SQL_CLR调用C#生成数组函数的主题,意味着我们将探讨如何在SQL Server中利用C#创建并操作数组类型的函数,以便在数据库环境中执行复杂的逻辑或计算。 首先,理解SQL CLR集成的基本步骤: 1. 创建一个.NET Framework...
由于数组不是ANSI SQL-92标准的内容,因此无论是T-SQL还是PL/SQL,都没有原生支持数组数据结构。为了解决这个问题,研究人员和开发人员不得不寻找替代方法来模拟二维数组,以便在数据库编程中使用数组。 本文提出了...
Oracle Array,也称为PL/SQL数组,是Oracle数据库中一种数据结构,用于存储相同类型的数据集合。在PL/SQL编程环境中,数组提供了一种高效的方式来处理批量数据,它允许一次性处理多个元素,而不是逐个处理。Oracle ...
我们在获取Excel数据时,需要将获取的值全部取出,返回到当前程序里,用返回一个数组的方式很简单。本示例就是不打开一个excel的前提,用sql获取它的内容。
在SQL Server中,我们不能直接定义一个数组类型的参数。然而,可以通过创建表类型变量或者使用XML类型来模拟数组的行为。表类型变量允许我们将多个值作为单个参数传递,而XML类型则可以用来序列化一组值。 2. **...