Передать параметр в запрос In в C# и SQL Server 2005 - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно передать значение этого строкового параметра через приложение C# в SQL Запрос к серверу:

'foo', 'bar'

Это запрос в коде:

sql = @String.Format(" SELECT * FROM ");
sql += String.Format("  [dbo].[PDTM] ");
sql += String.Format(" WHERE ");
sql += String.Format(" PDTM IN (@param1); ");

command.Parameters.AddWithValue("param1", txtPDTM.Text.ToString());

Но это пока не работает, потому что вывод пуст.

Затем я пытаюсь изменить запрос SQL на:

sql = @String.Format(" SELECT * FROM ");
sql += String.Format("  [dbo].[PDTM] ");
sql += String.Format(" WHERE ");
sql += String.Format(" PDTM IN (" + txtPDTM.Text.ToString() + "); ");

И это работает.

Так как правильно передать параметр в запрос IN в C#?

1 Ответ

1 голос
/ 03 апреля 2020

Это функция fn_split_string , которая разбивает строку:

ALTER function dbo.fn_split_string(@str nvarchar(1000),@sep nvarchar(1))
returns @tab_split  table (id int identity(1,1),str nvarchar(1000) )  
as  

begin  
declare @str1 as nvarchar(1000)  
declare @istr as nvarchar(1000)  
declare @i as integer  
set @str1=@str  
set @i=2  
while @i>0 
begin  
set @i=charindex(@sep,@str1,1)  
if @i>0  
begin  
set @istr=substring(@str1,1,@i-1)  
insert into @tab_split(str) values(@istr)  
set @str1=substring(@str1,@i+1,len(@str1))  
end  
end  
insert into @tab_split(str) values(@str1)  
return   
end

И выполняет функцию следующим образом:

SELECT * FROM dbo.fn_split_string ('foo, bar',',');

Выходные данные:

1   foo
2   bar

Это может быть что-то вроде:

SELECT * FROM dbo.PDTM WHERE PDTM IN (SELECT str FROM dbo.fn_split_string(@param1,','))

Как уже указывалось, следующий шаг - передать список строк в ваш оператор SQL.

Надеюсь, это поможет вам.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...