После обновления PHP больше не поддерживает операции PNG

Есть несколько вариантов для вас, но в основном вам нужно, чтобы ваши ценности были в таблице. Я бы предложил для этого переменную таблицы.

Вот версия, которая распаковывает список int.

declare @IDs varchar(max)
set @IDs = :listParam

set @IDs = @IDs+','

declare @T table(ID int primary key)

while len(@IDs) > 1
begin
  insert into @T(ID) values (left(@IDs, charindex(',', @IDs)-1))
  set @IDs = stuff(@IDs, 1, charindex(',', @IDs), '')
end

select *
from myTable
where intKey in (select ID from @T)

Возможно иметь запросы с несколькими операторами. Параметр :listParam должен быть строкой:

MyQuery.ParamByName('listParam').AsString := '1,2,3';

Вы можете использовать тот же метод для строк. Вам просто нужно изменить тип данных ID на, например, varchar(10).

Вместо распаковки с циклом while вы можете использовать функцию split

declare @T table(ID varchar(10))

insert into @T 
select s
from dbo.Split(',', :listParam)

select *
from myTable
where  charKey in (select ID from @T)

Строковый параметр может выглядеть следующим образом:

MyQuery.ParamByName('listParam').AsString := 'Adam,Bertil,Caesar';

16
задан miken32 20 April 2017 в 08:53
поделиться