PHP MySql, где поле = <4 слова - PullRequest
       6

PHP MySql, где поле = <4 слова

2 голосов
/ 19 января 2009

Мне нужно использовать запрос, который будет извлекать данные из поля, если оно меньше 4 слов, возможно ли это, и если да, то можете ли вы дать несколько указателей? Я полагаю, что если это невозможно, он может циклически просматривать результаты до тех пор, пока не найдет 3 слова, а затем завершить оператор while, когда найдет его.

Ответы [ 3 ]

10 голосов
/ 19 января 2009
SELECT column FROM table where LENGTH(column) - LENGTH(REPLACE(column, ' ', ''))+1 < 4

Кредиты и полное объяснение

Здесь Решение регулярных выражений .

select * from TABLE where column not regexp '^.+( .+){4}$'
1 голос
/ 19 января 2009

Вызов функций в выборке для каждой записи почти всегда является плохой идеей с точки зрения производительности - дисковое пространство обычно намного «дешевле», чем загрузка ЦП (я заключаю это в кавычки, поскольку я не говорю о долларе расходы).

Большинство баз данных имеют тенденцию быть «больше прочитанным, чем записать», как однажды сказал мне мой наставник DBA; идеальное решение в этой ситуации - использовать триггер при вставке или обновлении строки, чтобы вычислить количество слов в этом столбце и сохранить их в другом столбце. Идеально, потому что число слов изменяется только при обновлении поля, поэтому лучше выполнять затрачиваемый на это время расчет в этой точке, а не (без необходимости) каждый раз, когда вы читаете запись.

Добавленное требуемое пространство будет минимальным, так как вы добавляете (короткое) целое число к длинной (строка), но вы обнаружите, что ваши запросы кричат, просто используя целочисленное поле (убедитесь, что вы указали его).

0 голосов
/ 19 января 2009

Я собирался предложить LIKE '% % % %', но я не совсем уверен, сработает ли это или нет.

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