Как сделать использовать оператор переключения PHP, чтобы проверить, содержит ли строка слово (но может также содержать другие)?

Решения как Jeremies:

SELECT * FROM table ORDER BY RAND() LIMIT 1

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

SELECT * FROM table WHERE num_value >= RAND() * 
    ( SELECT MAX (num_value ) FROM table ) 
ORDER BY num_value LIMIT 1

Это работает в логарифмическое время, независимо от размера таблицы, если num_value индексируется. Один протест: это предполагает, что num_value одинаково распределяется в диапазоне 0..MAX(num_value). Если Ваш набор данных сильно отклонится от этого предположения, Вы получите скошенные результаты (некоторые строки будут появляться чаще, чем другие).

26
задан Austin Mullins 31 July 2014 в 15:30
поделиться

1 ответ

strpos() - один для проверки, содержит ли строка другую строку.

Существуют другие функции для проверки сходства строк и т. Д.

A switch не будет, тем не менее, так как он сравнивает статические выражения с одним значением. Вам придется использовать if с.

0
ответ дан 28 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: