web-dev-qa-db-ja.com

MySQL / SQLはテキストフィールドの最初の40文字を取得しますか?

Mysql dbテーブルからテキストフィールドを取得する方法はありますが、テキスト全体ではなく、わずか40文字程度です。

これはSQLで行うことができますか、PHPを使用して行う必要がありますか?

基本的に私がやろうとしているのは、最初のx文字を表示し、ユーザーがそれをクリックして完全なコンテンツを表示できるようにすることです。

37
John
_SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ...
_

LEFT() 関数を参照してください。

経験則として、あなたはPHP MySQLがあなたのためにできることでは決してしてはいけません。このように考えてください。 DBから要求側アプリケーションに厳密に必要なものより。


[〜#〜] edit [〜#〜]Ifデータ全体を使用します同じページ(つまり、中間リクエストなし)の場合、ほとんどの場合、notで全文を一度に取得する理由はありません。 (コメントおよび Veger's answer を参照してください。)

60
jensgram
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE

MySQLリファレンスマニュアルの機能:

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

5
Cocowalla

これを試して...
SELECT LEFT(field name、40)FROM table name WHERE condition最初の40および
SELECT RIGHT(フィールド名、40)FROMテーブル名WHERE条件最後の40

3
jeswin

他の人が既に示したように、SQLでこれを行うことができます。

しかし、alsoユーザーがクリックしたときに全文を表示したい場合は、全文も必要であり、データベースに短文と全文を送信させるのは無駄のようです。そのため、フルテキストを取得し、ユーザーがクリックしたときに短いテキストとフルテキストを表示するコードを記述することができます。

_$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文字より短いかどうかを確認し、このような状況に対処できます。

1
Veger

これもチェックして、

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