Другие языки программирования и технологии
Как в SQL найти запись по вхождению в заданное поле некоторого фрагмента текста?
Например в таблице Сотрудники есть поле ФИО и надо найти всех, например, Александров (без игнорирования регистра и т.п. - просто по фхождению текста).
ЛИКЕ "%АЛЕКСАНДР%"
лике латинскими буквами конечно
более сложный матчинг уже зависит от конкретной бд
особо придирчивым ну можно ЛИКЕ "АЛЕКСАНДР%". ясен пень что в одном поле это, по большому, счету херово конечно
лике латинскими буквами конечно
более сложный матчинг уже зависит от конкретной бд
особо придирчивым ну можно ЛИКЕ "АЛЕКСАНДР%". ясен пень что в одном поле это, по большому, счету херово конечно
А куле ж ты не в 3 поля пишешь? Ты не только всех Александров найдешь так, но и всех Алесандровых и Александровичей. В общем, налицо ошибка проектирования БД.
Олег Сафонов
Это тока пример, у меня там на самом деле гуиды )
правильно говорит Jurijus Zaksas
создавая базу надо прежде всего думать как база будет использоваться, а не как вам проще таблицы стряпать.. .
а вот было бы у вас ФИО по полям разбито, то и проиндексировать можно было бы, и искалось бы шустрее.. . потому как показанному в другом ответе варианту LIKE "%АЛЕКСАНДР%" никакой индекс не поможет)))
создавая базу надо прежде всего думать как база будет использоваться, а не как вам проще таблицы стряпать.. .
а вот было бы у вас ФИО по полям разбито, то и проиндексировать можно было бы, и искалось бы шустрее.. . потому как показанному в другом ответе варианту LIKE "%АЛЕКСАНДР%" никакой индекс не поможет)))
Использование LIKE настоятельно не рекомендую, ибо нагрузка не сервер нереальная. Юзай MATCH AGAINST. Синтаксис:
SELECT * FROM table WHERE field MATCH AGAINST 'критерий_поиска'.
Например, криетрием может быть +ответы +майл - тогда найдет все записи, содержащие оба этих слова. Ну и т. д. , правила можно найти в Нете.
PS Поле, по которому ведется поиск типа MATCH AGAINST, должно быть проиндексировано :) Т. е. там должен стоять INDEX
PPS И таки да, если ФИО в одном поле - это просто ппц! Так нельзя делать. Здесь никакой MATCH AGAINST не поможет :(
SELECT * FROM table WHERE field MATCH AGAINST 'критерий_поиска'.
Например, криетрием может быть +ответы +майл - тогда найдет все записи, содержащие оба этих слова. Ну и т. д. , правила можно найти в Нете.
PS Поле, по которому ведется поиск типа MATCH AGAINST, должно быть проиндексировано :) Т. е. там должен стоять INDEX
PPS И таки да, если ФИО в одном поле - это просто ппц! Так нельзя делать. Здесь никакой MATCH AGAINST не поможет :(
Похожие вопросы
- Помогите пожалуйста в программе Турбо Паскаль найти наибольшее значение из 4 заданных!
- Найти число Фибоначчи, ближайшее к заданному натуральному числу N. (программирование в языке Си)
- Найти сумму числового ряда с заданной точность епсилон (вводится пользователем): S = 1+1/22+ 1/32+ 1/42+ 1/52+ …
- Найти все такие простые числа, не превосходящие заданного N, двоичная запись которых представляет собой симметричную
- Люди, знающие SQL, помогите сделать запрос.
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- SQL (какие ?)
- [SQL-Access] Как вычесть текущую запись поля из предыдущего?
- t-sql (курсоры и циклы - взаимозаменяемы?)
- Перечень допустимых функций в SQL-запросе ADO Jet 4.0 (MS Access)