используя как tsql со списком значений - PullRequest
2 голосов
/ 30 марта 2011

В транзакции sql у меня есть:

 DECLARE @phrase='KeyWord1 KeyWord2 ,KeyWord3 ' -- and my be more separated by space,comma or ;(but mainly by space=it's a phrase)

 I have a table Students
              Students
             (
                StudentId bigint,
                FullName nvarchar(50),
                Article nvarchar(max)
             ) 

Я хочу отфильтровать студентов по статьям, приведя тех, кому в статье написано слово @ фразу

  Something like:
       DECLARE @WOrdTable TABLE
       (
        Word nvarchar(50)
       )
       INSERT INTO @WOrdTable
       SELECT WOrd of @phrase

   SELECT *
   FROM Students
   WHERE Article LIKE (Word in @phrase)

1 Ответ

2 голосов
/ 30 марта 2011

Я бы разбил вашу строку (через запятую) на временную таблицу в ваших словосочетаниях и выполнил бы соединение с таблицей «Студенты».Оттуда вы можете лучше использовать данные, чем в строковом формате

Существует множество способов разбить строку на таблицу:

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648

Когда у вас есть временная таблица, вы можете использовать что-то вроде этого.

SELECT S.*
FROM Students S (NOLOCK)
JOIN @tmpArticles A
  ON S.Articles LIKE '%' + A.Article '%'

Однако, предостережение: использование LIKE на% X% имеет ужасную производительность, поэтому поставьте под сомнение свой подход, если у вас есть МНОГО строк данных.

Эта проблема кажется более ориентированной на подход к полнотекстовому поиску (FTS)

http://msdn.microsoft.com/en-us/library/ms142571.aspx

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