Здесь возможны разные варианты в зависимости от сценария. Я использую SQL Server для множества приведенных ниже примеров, но большая часть его широко переносима между системами.
Для относительно небольшого массива (в идеале векторного) вы можете создать строку с разделителями (разделенную табуляцией, разделенную запятыми и т. Д.) И передать ее в свою БД и проанализировать - обычно вручную (в СУБД часто отсутствует подпрограмма "split") но очень легко получить заранее написанную «разделенную» реализацию (например, как UDF в SQL Server). Типичное использование:
SELECT st.*
FROM dbo.SplitUDF(@myarg) #udf
INNER JOIN SOME_TABLE st ON st.ID = #udf.Value
Xml - еще один вариант, особенно для сложных данных; SQL Server 2005 и более поздние версии имеют встроенный синтаксический анализ xml, но в целом это не следует предполагать.
Табличные параметры - это еще один вариант, но это только SQL Server 2008 - вполне возможно, что вы ищете.
Другим вариантом, особенно для больших данных, является закачка данных на сервер отдельно (массовая вставка, SQLBulkCopy
, "bcp", SSIS и т. Д.) И обработка данные через SQL, когда они там есть.
Чтобы получить массив / табличные данные, стандартным SELECT
должен быть ваш вариант по умолчанию, хотя вы, конечно, также можете создавать xml или символьные данные с разделителями. Последнее может быть достигнуто через причуду SQL:
DECLARE @foo varchar(max)
SET @foo = ''
SELECT @foo = @foo + st.SomeColumn + '|' -- pipe-delimited, note trailing |
FROM SOME_TABLE st