Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Amateur7 Member Откуда: Сообщений: 266 |
Добрый день. Есть запрос вида: SELECT * FROM table WHERE about like '%$text%' Так вот если $text = 'тестовая фраза', то результатов 20, а если $text = 'фраза тестовая', то результатов 10. Как сделать запрос, чтобы в дух случаях были одинаковые результаты(20 результатов поиска)? |
22 мар 13, 08:59 [14080103] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
Amateur7, или .можно FTS прикрутить |
22 мар 13, 09:06 [14080128] Ответить | Цитировать Сообщить модератору |
Dima T Member Откуда: Сообщений: 15596 |
На самом деле результатов 30 :) разбивай сначала фразу на слова и дальше так SELECT * FROM table WHERE about like '%тестовая фраза%' or about like '%фраза тестовая%' или SELECT * FROM table WHERE about like '%тестовая%' and about like '%фраза%' во втором способе может лишнее выбраться, т.к. не учитывается что слова должны быть рядом, например "фраза какая-то ... тестовая система" |
||
22 мар 13, 09:18 [14080153] Ответить | Цитировать Сообщить модератору |
Amateur7 Member Откуда: Сообщений: 266 |
Поэтому и спросил - в самом запросе sql это возможно сделать или нужно до запроса разбивать? |
22 мар 13, 09:20 [14080166] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Вам нужно использовать полнотекстовый поиск, если вы хотите искать именно слова. |
||
22 мар 13, 10:07 [14080366] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
Между 'тестовая' и 'фраза' должен быть ровно один пробел? Любое количество пробелов? Табуляция тоже может быть? Перевод строки? Что там вообще допускается и в каком количестве? alexeyvg, разбиением можно получить практически любой нужный результат. Только я не понял - почему "до запроса разбивать"? Почему не "в запросе разбивать"? |
||
22 мар 13, 10:46 [14080671] Ответить | Цитировать Сообщить модератору |
Amateur7 Member Откуда: Сообщений: 266 |
iap, нужно чтобы табуляция не учитывалась, перевод строки и количество пробелов тоже не учитывались(т.е. чтобы всегда был один пробел, т.к. пользователь может случайно и два пробела вместо одного сделать). В принципе сейчас есть вариант с разбиение до запроса, се хорошо работает, но хотелось бы узнать возможности разбиения самом запросе по данному примеру. |
22 мар 13, 17:21 [14083751] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |