在SQL中如何从数组中获取值再进行查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL中如何从数组中获取值再进行查询相关的知识,希望对你有一定的参考价值。
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
请帮忙写一下完整代码
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
字符数组
追答就是都在数据库中判断呗,从C中判断A值的索引,再用该索引在D中找到对应的B值
是这样的吧
如何从 RDL 文件中的语义查询中获取物理 SQL 查询?
【中文标题】如何从 RDL 文件中的语义查询中获取物理 SQL 查询?【英文标题】:How to fetch Physical SQL Query from a Semantic Query in RDL file? 【发布时间】:2011-12-13 07:51:52 【问题描述】:在从 RDL 中提取语义查询时,我们需要执行以下一些步骤
-
从 RDL 文件中提取语义查询
根据语义模型 XSD 进行验证
将语义查询解析和转换成一个结构,我们将能够从 生成物理 SQL
执行转换过程得到物理查询
我们完成了第 1 步,我们能够从 RDL 中提取语义查询并将其存储在 XML 中
问题一:
对于第 2 步,针对 XSD 进行验证。 XSD 路径是http://schemas.microsoft.com/sqlserver/2004/10/semanticmodeling/SemanticModeling.xsd,我们的 XML 是从 RDL 中提取的。上面提到的语义模型 XSD 对 DataSourceView.XSD 有一些导入命名空间。谁能建议我如何以及在哪里可以获得 DataSourceView.XSD?
问题2:
对于语义查询的解析和转换,我们是否需要在 C# 中创建一个 XML 解析器或任何可以执行此操作的 API。
我们无法针对报告模型运行 RDL 文件,因为我们的要求是获取物理 SQL 而不是数据集。
【问题讨论】:
【参考方案1】:我还没有找到直接从包含报表模型引用的 RDL 文件中提取 SQL 或将语义查询转换为 SQL 的方法。
但是,SQL 在报告生成后在Report Server log file 中可用。
【讨论】:
以上是关于在SQL中如何从数组中获取值再进行查询的主要内容,如果未能解决你的问题,请参考以下文章
如何使用从 laravel 中的数组中获取的各种术语进行 mysql 关联查询