Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор слов без определённых букв / 7 сообщений из 7, страница 1 из 1
19.07.2015, 20:31:35
    #39010830
Выбор слов без определённых букв
Добрый вечер.

Столкнулся с такой проблемой:
У меня есть таблица со словами - words, в которой есть столбец - word.

Всё просто. Мне необходимо выбирать слова, в которых нет определённых букв.
Например, выбрать все слова в которых нет - и, а, з, к, д.

Ладно если это была бы одна буква, но не LIKE-ом же?
NOT IN вроде как не подходит.

Подскажите, я в смятении.

Спасибо.
...
Рейтинг: 0 / 0
19.07.2015, 21:59:02
    #39010850
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор слов без определённых букв
RLIKE
...
Рейтинг: 0 / 0
19.07.2015, 22:08:36
    #39010851
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор слов без определённых букв
1) RLIKE
2) сфинксы всякие
3) на лету разбиваем строку на символы и проверяем отсутствие в полученном множестве исключаемых символов
...
Рейтинг: 0 / 0
19.07.2015, 22:10:30
    #39010852
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор слов без определённых букв
Есть ещё и 4-й вариант. Самый быстрый. Мгновенный. По любому набору букв.
...
Рейтинг: 0 / 0
19.07.2015, 23:39:36
    #39010875
Выбор слов без определённых букв
Cyrax_02,

о, спасибо!
Я пропустил.

Регулярки это замечательно.
Пусть и медленнее будут работать(наверное), но это мелочи, у меня в этом проблем не будет.

Ещё раз спасибо.
...
Рейтинг: 0 / 0
19.07.2015, 23:54:46
    #39010877
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор слов без определённых букв
Можно и так:
Код: sql
1.
(INSTR(word, 'и') = 0) AND (INSTR(word, 'а') = 0) AND (INSTR(word, 'з') = 0) AND (INSTR(word, 'к') = 0) AND (INSTR(word, 'д') = 0)


А регулярками - так:
Код: sql
1.
word RLIKE '^[^иазкд]*$'

или так:
Код: sql
1.
word NOT RLIKE '[иазкд]'

(вариант с NOT RLIKE будет работать быстрее)
...
Рейтинг: 0 / 0
19.07.2015, 23:57:57
    #39010878
Cyrax_02
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор слов без определённых букв
Код: sql
1.
(INSTR(word, 'и') = 0) AND (INSTR(word, 'а') = 0) AND (INSTR(word, 'з') = 0) AND (INSTR(word, 'к') = 0) AND (INSTR(word, 'д') = 0)

Эту конструкцию лучше построить так:
Код: sql
1.
NOT((INSTR(word, 'и') > 0) OR (INSTR(word, 'а') > 0) OR (INSTR(word, 'з') > 0) OR (INSTR(word, 'к') > 0) OR (INSTR(word, 'д') > 0))

Так будет работать гораздо быстрее...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор слов без определённых букв / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]