Поиск фраз в SQL Server 2008 (T-SQL) - PullRequest
       30

Поиск фраз в SQL Server 2008 (T-SQL)

0 голосов
/ 27 августа 2011

У меня есть varchar столбец с 3 строками:

i eat orange,
orange,
oranges are nice

Я хочу, чтобы запрос SELECT возвратил результат в следующем порядке:

orange, oranges are nice, i eat orange

, то есть те совпадения, которые начало с 'keyword'=orange должно предшествовать тем, которые содержат ключевое слово, которое снова должно предшествовать тем, которые заканчиваются ключевым словом.

Как я могу сделать это с помощью T-SQL?Я пытался использовать ключевое слово LIKE, но пока безуспешно.

Ответы [ 2 ]

2 голосов
/ 27 августа 2011
 WHERE column LIKE '%' + keyword + '%'
 ORDER BY CASE WHEN column = keyword THEN 0
               WHEN column LIKE keyword + '%' THEN 1
               WHEN column LIKE '%' + keyword + '%' THEN 2 END

Но на самом деле для этого вида поиска вы хотите использовать полнотекстовый индекс.

2 голосов
/ 27 августа 2011

Попробуйте следующий порядок по предложению (при условии, что ваше предложение WHERE возвращает только совпадения)

ORDER BY charIndex(keyword,col_name),length(col_name)

Сначала будет поставлено самое раннее вхождение ключевого слова.

...