Как написать процедуру поиска магазина (CSV)? - PullRequest
2 голосов
/ 01 февраля 2010

как я могу написать процедуру сохранения для поиска конкретной строки в столбце таблицы для заданного набора строк (строка CSV).

like: выберите * из xxx, где такие теги, как ('oscar', 'rahman', 'slumdog')

как мне написать процедуру для этой комбинации тегов.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2010

Чтобы создать строку, разделенную запятыми ...

Затем вы можете применить этот список к примеру Oded для создания LIKE частей WHERE cluase на лету.

DECLARE @pos int, @curruntLocation char(20), @input varchar(2048)
SELECT @pos=0
SELECT @input = 'oscar,rahman,slumdog'
SELECT @input = @input + ','

CREATE TABLE #tempTable (temp varchar(100) )

WHILE CHARINDEX(',',@input) > 0
BEGIN
SELECT @pos=CHARINDEX(',',@input)
SELECT @curruntLocation = RTRIM(LTRIM(SUBSTRING(@input,1,@pos-1)))
INSERT INTO #tempTable (temp) VALUES (@curruntLocation)
SELECT @input=SUBSTRING(@input,@pos+1,2048)
END

SELECT * FROM #tempTable
DR0P TABLE #tempTable
0 голосов
/ 01 февраля 2010

Во-первых, использование like для точных совпадений является неоптимальным. Можно также использовать =, и если вы это сделаете, вы можете использовать синтаксис IN:

select * from xxx 
where tags IN ('oscar', 'rahman', 'slumdog') 

Я предполагаю, что вы ищете не точное совпадение, а запись, в которой поле tags содержит всех тегов.

Это было бы что-то вроде этого:

select * from xxx 
where tags like '%oscar%' 
  and tags like '%rahman%'
  and tags like '%slumdog%' 

Это не будет очень быстрым или производительным, хотя.

Подумайте о том, чтобы перенести такую ​​логику в ваше приложение, где это быстрее и проще сделать.

Edit:

После комментариев - существует множество примеров того, как разобрать с разделителями строк . Вы можете поместить их в таблицу и использовать dynamic sql для генерации вашего запроса.

Но это будет иметь плохую производительность, и SQL Server не сможет кэшировать планы запросов для такого рода вещей. Как я уже говорил выше - подумайте о том, чтобы перенести эту логику на уровень приложений.

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