MySQL/SQL извлекает первые 40 символов текстового поля?
Как получить текстовое поле из таблицы mysql db, но не весь текст, всего несколько 40 символов.
Можно ли это сделать в sql или мне нужно сделать это с помощью php?
в основном то, что я пытаюсь сделать, это показать первые символы x, а затем позволить пользователю щелкнуть по нему, чтобы просмотреть полный контент.
Ответы
Ответ 1
SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ...
Смотрите функцию LEFT()
.
Как правило, вы никогда не должны делать в PHP то, что MySQL может сделать для вас. Подумайте об этом так: вы не хотите передавать что-то большее, чем строго необходимо из БД, в запрашивающие приложения.
РЕДАКТИРОВАТЬ. Если вы собираетесь использовать все данные на одной странице (т.е. без промежуточного запроса) чаще, чем нет, нет причин не извлекать полный текст за один раз. (См. Комментарии и Ответ Veger.)
Ответ 2
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE
Функция в справочном руководстве MySQL:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left
Ответ 3
попробуйте это...
SELECT LEFT (имя поля, 40) FROM имя таблицы WHERE условие для первых 40 и
SELECT RIGHT (имя поля, 40) FROM имя таблицы WHERE условие для последних 40
Ответ 4
Вы можете сделать это в SQL, как показано на других.
Но если вы также хотите показать полный текст, если пользователь нажмет на него, вам также понадобится полный текст, и кажется, что это пустая трата, позволяющая базе данных отправлять вам короткие и полные текст. Таким образом, вы можете получить полный текст и написать код, чтобы показать короткий текст и полный текст, когда пользователь нажимает на него.
$result = mysql_query('SELECT text FROM table');
$row = mysql_fetch_row($result);
echo '<div onclick="alert(\''.$row[0].'\');">'.substr($row[0], 0, 40).'</div>';
Конечно, вы можете сделать что-то приятнее, когда вы нажмете на него (вместо alert()
). Кроме того, вы можете сделать некоторые проверки PHP, чтобы увидеть, если оригинал короче 40 символов и обрабатывать такие ситуации.
Ответ 5
Проверьте это,
mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename');