MySQL / SQL получить первые 40 символов текстового поля? - PullRequest
36 голосов
/ 17 января 2010

Как я могу получить текстовое поле из таблицы mysql db, но не весь текст, только несколько символов или около того.

Можно ли это сделать в sql или мне нужно сделать это с помощью php?

По сути, я пытаюсь показать первые x символов, а затем позволить пользователю щелкнуть по нему, чтобы просмотреть весь контент.

Ответы [ 5 ]

59 голосов
/ 17 января 2010
SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ...

См. Функцию LEFT().

Как правило , вы никогда не должны делать в PHP то, что MySQL может сделать для вас. Подумайте об этом так: вы не хотите передавать что-либо более строгое из БД запрашивающим приложениям.


РЕДАКТИРОВАТЬ Если вы будете использовать все данные на одной и той же странице (т.е. без промежуточного запроса) чаще, чем нет, есть без причины не чтобы получить полный текст сразу. (См. Комментарии и ответ Вегера .)

5 голосов
/ 17 января 2010
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE

Функция в справочном руководстве MySQL:

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left

3 голосов
/ 04 июня 2013

попробуйте это ...
ВЫБРАТЬ ВЛЕВО (имя поля, 40) ОТ имени таблицы ГДЕ условие для первых 40 и
ВЫБРАТЬ ПРАВО (имя поля, 40) ОТ имени таблицы ГДЕ условие для последних 40

1 голос
/ 17 января 2010

Вы можете сделать это в 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 символов, и обрабатывать подобные ситуации.

0 голосов
/ 18 сентября 2014

Отметьте и это,

 mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename');
...