Обработка данных в В пункте, с параметрами SQL?

Вы можете обмануть, глядя на пакет GNU Octave image . В качестве языка скриптов есть im2col и col2im:

Насколько я понимаю, он отличается большинством в стиле комментариев (# вместо%) и другим строковым стилем (вместо «). Если вы измените это и удалите тест assert внизу, это может быть

Кроме того, знайте о лицензии (GPLv3). Это бесплатно, но ваши изменения также должны быть бесплатными!

10
задан outis 3 July 2012 в 18:33
поделиться

6 ответов

Здесь Вы идете - сначала создают следующую функцию...

Create Function [dbo].[SeparateValues]
(
    @data VARCHAR(MAX),
    @delimiter VARCHAR(10) 
) 
    RETURNS @tbldata TABLE(col VARCHAR(10))
As
Begin
    DECLARE @pos INT
    DECLARE @prevpos INT

    SET @pos = 1 
    SET @prevpos = 0

    WHILE @pos > 0 
        BEGIN

        SET @pos = CHARINDEX(@delimiter, @data, @prevpos+1)

        if @pos > 0 
        INSERT INTO @tbldata(col) VALUES(LTRIM(RTRIM(SUBSTRING(@data, @prevpos+1, @pos-@prevpos-1))))

        else

        INSERT INTO @tbldata(col) VALUES(LTRIM(RTRIM(SUBSTRING(@data, @prevpos+1, len(@data)-@prevpos))))

        SET @prevpos = @pos 
    End

    RETURN

END

затем используйте следующее...

Declare @CommaSeparated varchar(50)
Set @CommaSeparated = '112,112,122'
SELECT ID,Column1,Column2 FROM MyTable WHERE ID IN (select col FROM [SeparateValues](@CommaSeparated, ','))

Я думаю SQL-сервер, который 2008 позволит функциям таблицы.

ОБНОВЛЕНИЕ

Вы сожмете некоторую дополнительную производительность с помощью следующего синтаксиса...

SELECT ID,Column1,Column2 FROM MyTable
Cross Apply [SeparateValues](@CommaSeparated, ',') s
Where MyTable.id = s.col

Поскольку предыдущий синтаксис заставляет SQL Server выполнять дополнительную команду "Sort" с помощью "В" пункте. Плюс - по-моему, это выглядит более хорошим :D!

5
ответ дан 4 December 2019 в 04:21
поделиться

Если требуется передать массив, Вам будет нужна функция в sql, который может превратить тот массив в подвыбор.

Эти функции очень распространены, и большинство систем собственной разработки использует в своих интересах их.

Самый коммерческий, или довольно профессиональный ORM's делает ins путем выполнения набора переменных, поэтому если у Вас есть та работа, я думаю, что это - стандартный метод.

1
ответ дан 4 December 2019 в 04:21
поделиться

Вы могли составить временную таблицу, TempTable с отдельным столбцом ОЦЕНИВАЮТ и вставляют все идентификаторы. Затем Вы могли сделать это с подвыбором:

SELECT ID,Column1,Column2 FROM MyTable WHERE ID IN (SELECT VALUE FROM TempTable)
0
ответ дан 4 December 2019 в 04:21
поделиться

Пойдите с решением, отправленным digiguru. Это - большое допускающее повторное использование решение, и мы используем ту же технику также. Новые члены команды любят его, поскольку это экономит время и сохраняет наши хранимые процедуры последовательными. Решение также работает хорошо с Отчетами SQL, поскольку параметры передали хранимым процедурам для создания передачи recordsets в varchar (8000). Вы просто поднимаете трубку его и идете.

0
ответ дан 4 December 2019 в 04:21
поделиться

В SQL Server 2008 они наконец нашли время для рассмотрения этой классической проблемы путем добавления нового типа данных "таблицы". По-видимому, это позволяет Вам передать в массиве значений, которые могут использоваться в подвыборе для выполнения того же как оператора IN.

Если Вы используете SQL Server 2008, то Вы могли бы изучить это.

-1
ответ дан 4 December 2019 в 04:21
поделиться

Вот одна техника, которую я использую

ALTER   Procedure GetProductsBySearchString
@SearchString varchar(1000),
as
set nocount on
declare @sqlstring varchar(6000)
select @sqlstring = 'set nocount on
select a.productid, count(a.productid) as SumOf, sum(a.relevence) as CountOf 
 from productkeywords a 
 where rtrim(ltrim(a.term)) in (''' + Replace(@SearchString,' ', ''',''') + ''')
 group by a.productid order by SumOf desc, CountOf desc'

exec(@sqlstring)
-2
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: