`
joerong666
  • 浏览: 416115 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql 数组

阅读更多

sql 数组中取存在项

一个表中有这样一组数据 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

分享到:
评论

相关推荐

    sql.rar_SQL 数组

    以上就是使用VB.NET处理SQL数组参数的基本步骤。这种做法允许你在一次数据库调用中处理多个ID,提高了效率。但要注意,如果数组过大,可能会导致SQL语句过长,超出数据库允许的长度限制。在这种情况下,你可能需要...

    整理:oracle pl/sql 入门+ 数组使用+游标+动态SQL

    - PL/SQL数组:在PL/SQL中,数组是一种可以存储同一类型数据的集合,提供了批量操作数据的能力。 - 定义数组:学习如何声明并初始化数组,以及指定数组的大小和元素类型。 - 数组操作:包括赋值、索引访问、遍历...

    Spark SQL操作JSON字段的小技巧

    Spark SQL是一款强大的大数据处理工具,它提供了对JSON数据的内置支持,使得在处理JSON格式的数据时更加便捷。本文将详细介绍Spark SQL操作JSON字段的几个关键函数:get_json_object、from_json 和 to_json,以及...

    只能在PL/SQL中访问联合数组。

    在Oracle数据库的PL/SQL环境中,联合数组(Varying Array)是一种特殊的变量类型,它允许程序员存储一组相同类型的元素,这些元素可以是数值、字符串或其他复杂的数据类型。联合数组在PL/SQL中扮演着重要角色,特别...

    仿制简单的SQL select查询语句,用于对二维数组的查询,建立环境-Excel Vba,可移植到VB环境中

    '仿制简单的SQL查询语句,用于对二维数组的查询 '参照SQL语句:Select * From array [Where conditions] [Distinct fields] [ResultWithTitle] ' '实现功能: ' 依条件设置查询数组,返回包含查询字段(或全部字段)...

    在SQL存储过程中进行参数数组Array Parameter的处理函数

    尽管SQL Server本身并不直接支持数组参数,但可以通过一些技巧来模拟这种功能。以下将详细讲解如何在SQL存储过程中处理参数数组。 1. **使用Table-Valued Parameters (TVP)** TVP是SQL Server 2008引入的一种特性...

    ClickHouse中文翻译文档 (开源分析性数据库--高速查询,大数据实时分析时代黑马)

    Ø 6.SQL语法支持 Ø 7.向量化引擎 Ø 8.实时数据更新 Ø 9.索引 Ø 10.适合在线查询 Ø 11.支持近似预估计算 Ø 12.支持嵌套的数据结构 Ø 支持数组作为数据类型 Ø 13.支持限制查询复杂性以及...

    在SQL Server中实现数据的数组式读取.pdf

    "在SQL Server中实现数据的数组式读取" 标题:“在SQL Server中实现数据的数组式读取” 描述:在SQL Server中实现数据的数组式读取.pdf 标签:“SQL 数据库 数据处理 参考文献 专业指导” 在SQL Server中实现...

    pl_sql中的集合

    索引数组,也称为PL/SQL数组,是最基本的集合类型。它们类似于C语言中的数组,拥有固定的大小,并且元素按照数字索引进行访问。索引数组的元素类型可以是任何PL/SQL类型,包括复合类型。当创建一个索引数组时,必须...

    oracle的pl-sql源代码

    1. **PL/SQL数组类型**:在PL/SQL中,数组是一种可以存储同类型数据集合的数据结构。你可以定义固定大小或变大小的数组,并通过索引来访问和操作数组元素。例如,你可以创建一个存储员工ID的数组,并一次性处理多个...

    sqlserver 分解数组

    分解数组的sqlserver的t-sql语句

    数组转为sql语句,依赖nilportugues.rar

    1、首先,要使用数组生成SQL语句,需要先确定SQL语句的类型,比如SELECT,INSERT,UPDATE等。 2、如果是SELECT语句,需要先定义要查询的字段,比如:$fields=array('name','age'); 3、然后定义要查询的表名,比如...

    PL-SQL讲义

    集合(PL-SQL数组或关联数组)可以存储多个相同类型的元素,方便批量处理。 9. **包(PACKAGE)** 包是PL-SQL的一个高级特性,它允许将相关的对象(如过程、函数、类型等)打包在一起,提供更好的模块化和封装性。...

    sql 解析字符串为数组,根据索引,获得数组的值

    sql通用函数, 解析字符串为数组,根据索引,获得数组的值

    PLSQLcode in Oracle9i PL/SQL Programming

    3. **PL/SQL变量和数组**:理解变量的声明、初始化、赋值和传递机制,以及如何使用PL/SQL数组来处理集合数据。 4. **游标**:在PL/SQL中,游标用于检索单行记录,它是处理查询结果集的一种方法。学习如何声明、打开...

    sql_clr调用c#生成数组函数

    SQL_CLR调用C#生成数组函数的主题,意味着我们将探讨如何在SQL Server中利用C#创建并操作数组类型的函数,以便在数据库环境中执行复杂的逻辑或计算。 首先,理解SQL CLR集成的基本步骤: 1. 创建一个.NET Framework...

    Transact-SQL和PL_SQL中二维数组的模拟.pdf

    由于数组不是ANSI SQL-92标准的内容,因此无论是T-SQL还是PL/SQL,都没有原生支持数组数据结构。为了解决这个问题,研究人员和开发人员不得不寻找替代方法来模拟二维数组,以便在数据库编程中使用数组。 本文提出了...

    Oracle Array定义

    Oracle Array,也称为PL/SQL数组,是Oracle数据库中一种数据结构,用于存储相同类型的数据集合。在PL/SQL编程环境中,数组提供了一种高效的方式来处理批量数据,它允许一次性处理多个元素,而不是逐个处理。Oracle ...

    VBA 返回数组的函数Function(sql方法)不打开excel

    我们在获取Excel数据时,需要将获取的值全部取出,返回到当前程序里,用返回一个数组的方式很简单。本示例就是不打开一个excel的前提,用sql获取它的内容。

    一个基于SQL server 2005实现的通过一个数组参数进行Procedure的parameter传递例子

    在SQL Server中,我们不能直接定义一个数组类型的参数。然而,可以通过创建表类型变量或者使用XML类型来模拟数组的行为。表类型变量允许我们将多个值作为单个参数传递,而XML类型则可以用来序列化一组值。 2. **...

Global site tag (gtag.js) - Google Analytics