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

C='a1,a2,a3,a4,a5,a6'D='b1,b2,b3,b4,b5,b6'A是从别的地方动态获取的一个值,如果A=a1,B就等于b1,如果A=b3,B就等于b3... C='a1,a2,a3,a4,a5,a6'
D='b1,b2,b3,b4,b5,b6'
A是从别的地方动态获取的一个值,
如果A=a1,B就等于b1,如果A=b3,B就等于b3,……
确定了B的值以后,再去Select
如:
select TOP 7 * from Data_Content where title = B order BY ID DESC

请帮忙写一下完整代码
展开
 我来答
frogley
2013-08-07 · TA获得超过1854个赞
知道小有建树答主
回答量:1008
采纳率:50%
帮助的人:1082万
展开全部
----首先定义一个split函数,其作用是将字符串拆分成表
CREATE FUNCTION [fn_split]
(@SourceSql varchar(8000), @StrSeprate varchar(10))
RETURNS @temp table
(
  [n] int NULL,
  [a] varchar(100) NULL
)
AS
BEGIN
declare @i int,@n int;
  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 @C varchar(100),@D varchar(100);
set @C='a1,a2,a3,a4,a5,a6';
set @D='b1,b2,b3,b4,b5,b6';
declare @A varchar(10),@B varchar(10);
set @A='a4';
select @B=t2.a from fn_split(@C,',') t1,fn_split(@D,',') t2 where t1.n=t2.n and t1.a=@A;
select @B;
--这里将得到@B=b4

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

szm341
2013-08-07 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5169万
展开全部
C跟D是什么?变量吗?是在数据库中的还是程序中的?
追问
字符数组
追答
就是都在数据库中判断呗,从C中判断A值的索引,再用该索引在D中找到对应的B值
是这样的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式