当前位置:首页 » 编程语言 » sql遍历数组
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql遍历数组

发布时间: 2022-05-29 21:36:19

sql server 查询表 in一个数组

如果是一维数组:$nams=implode(',', ArrarLIst);
select * from table1 where name in ($names);

//注意字符查询需要前后带引号,数字不用

如果是多维数组:得遍历ArrarLIst数组,取出相应的name再串联起来

⑵ 遍历数组存入数据库问题

你要使用循环
foreach函数返回数组的元素里的一个指针,只指向后面一个元素的值,所以采用循环可以遍历出数组里的所有元素

⑶ sql 遍历数组特殊符号生成行

如果你是sql server 2005就可以这么写:
select A.[总号],B.content from (
SELECT *,[value]=CONVERT(XML,'<v>'+REPLACE([内容],'.','</v><v>')+'</v>')
from test
) A
OUTER APPLY (
SELECT id=N.v.value('.','varchar(100)')
FROM A.[value].nodes('/v') N(v)
) B
这其它的我就不知道了。

⑷ T-SQL中怎么声名数组

T-SQL对字符串的处理能力比较弱,比如要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。

一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。

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

调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')
返回值:4

二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便

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
调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
返回值:9

三、结合上边两个函数,象数组一样遍历字符串中的元素

declare @str varchar(50)
set @str='1,2,3,4,5'
declare @next int
set @next=1
while @next<=dbo.Get_StrArrayLength(@str,',')
begin
print dbo.Get_StrArrayStrOfIndex(@str,',',@next)
set @next=@next+1
end

⑸ java,sql语句删除,条件是一个数组,如何一条sql语句写出来

遍历方式的执行sql
遍历数据,每一个数组元素删除一次

⑹ 如何遍历由createSQLquery 进行联合查询得到的结果

需要遍历每条查询结果来进行某些操作,例如拆分查询结果的字符串就要通过循环来进行,以下给出了一种循环遍历的例子供大家参考。

假设表TblTest有两个字段:id, value, 而value的值在查到后需要拆分,如:'aa,bb,cc',就可利用以下循环来进行(拆分的例子可以参考另一篇文章:Sql Server中如何拆分字符串)。

/* tmp table that store the flag to indicate if this record is processed */
declare @TblTest_tmp table(
id decimal(18,0),
[flag] int
)

/* total count for the query result */
declare @totalcount int
declare @rownum int

select @totalcount = count(1) from TblTest

set @rownum = 1

while @rownum <= @totalcount
begin
declare @id decimal(18,0),
@value varchar(2000)

select top 1 @id=[id], @value=[value] from TblTest where flag=0

/* do sth for @value, e.g. select * from split(@value, ',') */

update @TblTest_tmp set flag = 1 where [id] = @id
set @rownum = @rownum + 1
end

⑺ java.sql.Array如何遍历

用getArray()转化成数组,OK!!!

⑻ 如何在SQL语句中使用循环和数组

sql中没有数组吧,至少目前为止我不知道有这玩意儿。。。

循环语法如下:

declare@nextint
set@next=1
while@next<10
begin
--循环中的逻辑
@next=@next+1
end

⑼ 在SQL中如何从数组中获取值再进行查询

----首先定义一个split函数,其作用是将字符串拆分成表
CREATEFUNCTION[fn_split]
(@SourceSqlvarchar(8000),@StrSepratevarchar(10))
RETURNS@temptable
(
[n]intNULL,
[a]varchar(100)NULL
)
AS
BEGIN
declare@iint,@nint;
set@n=0;
set@SourceSql=rtrim(ltrim(@SourceSql));
set@i=charindex(@StrSeprate,@SourceSql);
while(@i>=1)
begin
set@n=@n+1;
insert@temp([n],[a])values(@n,left(@SourceSql,@i-1));
set@SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i);
set@i=charindex(@StrSeprate,@SourceSql);
end
if(@SourceSql<>'')
begin
set@n=@n+1;
insert@temp([n],[a])values(@n,@SourceSql);
end
return
END
GO

--接下来利用这个函数将数组转化成表,查出A的对应值
declare@Cvarchar(100),@Dvarchar(100);
set@C='a1,a2,a3,a4,a5,a6';
set@D='b1,b2,b3,b4,b5,b6';
declare@Avarchar(10),@Bvarchar(10);
set@A='a4';
select@B=t2.afromfn_split(@C,',')t1,fn_split(@D,',')t2wheret1.n=t2.nandt1.a=@A;
select@B;
--这里将得到@B=b4

--接下来就可以使用@B了
select TOP 7 * from Data_Content where title = @B order BY ID DESC