MySQL / SQL извлекает первые 40 символов текстового поля?

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

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

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

SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ... 

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

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


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

 SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE 

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

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

попробуй это…
SELECT LEFT (имя поля, 40) FROM имя таблицы WHERE условие для первых 40 и
SELECT RIGHT (имя поля, 40) FROM имя таблицы WHERE условие для последних 40

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

Проверьте это,

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