sql – 使用IN参数的过程
发布时间:2021-01-19 11:26:51 所属栏目:MsSql教程 来源:网络整理
导读:你能帮我吗,我想创建一个程序,允许我发送一个参数把它放在一个IN子句中,如下所示: CREATE PROCEDURE [dbo].[NamesQry] @Names char(150)AS SELECT * From Mydatabase Where Names in (@Names); 并执行 EXEC [dbo].[IGDMediaSkills] 'Carl,Johnson' 问题是我
|
你能帮我吗,我想创建一个程序,允许我发送一个参数把它放在一个IN子句中,如下所示: CREATE PROCEDURE [dbo].[NamesQry]
@Names char(150)
AS
SELECT * From Mydatabase Where
Names in (@Names);
并执行 EXEC [dbo].[IGDMediaSkills] 'Carl,Johnson' 问题是我不知道如何将多参数发送到程序. 解决方法根据您的技能设置执行此操作的两种方法.>您可以创建SQL CLR函数. [Microsoft.SqlServer.Server.SqlFunction(Name="fnToList",FillRowMethodName="FillRow",TableDefinition="ID NVARCHAR(1000)")]
public static IEnumerable SqlArray(SqlString inputString,SqlString delimiter)
{
if (string.IsNullOrEmpty(delimiter.Value))
return new string[1] { inputString.Value };
return inputString.Value.Split(delimiter.Value.ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
}
public static void FillRow(object row,out SqlString str)
{
str = new SqlString((string)row);
}
或者……您可以创建常规SQL函数: CREATE FUNCTION [dbo].[fnArray] ( @Str varchar(8000),@Delim varchar(1) = ' ' )
returns @tmpTable table ( arrValue varchar(25))
as
begin
declare @pos integer
declare @lastpos integer
declare @arrdata varchar(8000)
declare @data varchar(25)
set @arrdata = replace(replace(replace(replace(upper(@Str),@Delim,'|'),'-',''),'/','','|')
set @arrdata = @arrdata + '|'
set @lastpos = 1
set @pos = 0
set @pos = charindex('|',@arrdata)
while @pos <= len(@arrdata) and @pos <> 0
begin
set @data = substring(@arrdata,@lastpos,(@pos - @lastpos))
if rtrim(ltrim(@data)) > ''
begin
if not exists( select top 1 arrValue from @tmpTable where arrValue = @data )
begin
insert into @tmpTable ( arrValue ) values ( @data )
end
end
set @lastpos = @pos + 1
set @pos = charindex('|',@arrdata,@lastpos)
end
return
end
然后使用: SELECT * From Mydatabase Where Names in (select arrValue from dbo.fnArray(@Names,',')) (编辑:天瑞地安资讯网_黄海网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 链接服务器问题.无法使用Windows身份验证作为
- sql-server – 如何编写SQL Server作业的脚本以进行迁移
- sql-server – 我可以在2008服务器上使用SQL Server Manage
- 数据库设计 – 数据库设计:两个1到多个关系到同一个表
- sql-server-2012 – 没有数据的SQL Server 2012拷贝数据库
- SQL Server使用架构无法正常工作创建用户定义的表类型
- sql-server – 从备份SQL Server还原,只是主文件组
- sql – 如何找到SSIS 2008 R2包中使用的.NET框架版本?
- SQL Server – 缺少NATURAL JOIN / x JOIN y USING(字段)
- 更新数据库行而不在PostgreSQL 9.2中锁定表
站长推荐
热点阅读


