2010-01-17 3 views
34

어떻게 mysql db 테이블에서 텍스트 필드를 검색 할 수 있습니까? 전체 텍스트가 아닌 40 개 정도의 문자 만 검색 할 수 있습니다.MySQL/SQL은 텍스트 필드의 처음 40자를 검색합니까?

SQL에서이 작업을 수행 할 수 있습니까? 아니면 PHP를 사용하여 수행해야합니까?

기본적으로 내가하려는 것은 첫 번째 x 문자를 표시 한 다음 사용자가 전체 콘텐츠를 보려면 클릭하도록 허용하는 것입니다. MySQL의 참조 설명서에

답변

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

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_leftLEFT() 기능을 참조하십시오.

엄지 손가락 규칙으로, MySQL에서 할 수있는 일은 PHP로해서는 안됩니다. 이 방법으로 생각해보십시오. DB에서 요청하는 응용 프로그램으로 엄격하게 필요한 것 이상을 전송하고 싶지는 않습니다.


편집더 자주 못하는 것보다 (아무 중간 요청, 즉) 같은 페이지에 전체 데이터 를 사용하는거야 경우는 페치 할 이유 하지 없다 한 번에 전체 텍스트. (의견과 Veger's answer을 참조하십시오.)

+0

정식 버전이 필요합니다 짧은 문자열 **와 ** 전체 문자열! 따라서 엄지의 자신의 규칙을 어기는 ... – Veger

+0

@ 베거 반드시. 당신 말이 맞을지도 모르지만, OP는 단지 "클릭"을 언급합니다 - 전체 텍스트 (예 : 뉴스 항목)가있는 페이지에 대한 링크 일 수 있습니다.이 경우 전체를 가져 와서 페이지를 생성하기 만하면됩니다. 티저 목록. 다른 말로하면 : * 할 수있는 세부적인 양을 감안할 때 최선의 방법을 제공 할 수는 없지만 엄지 손가락의 규칙을 제공하십시오. (본질적으로 - 자주는 아니지만 항상 그렇습니다). – jensgram

+0

맞습니다. 정보가 제공되지 않은 것에 달려 있습니다! – Veger

5
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE 

기능 :

1

이미 표시된 다른 항목과 마찬가지로 SQL에서이 작업을 수행 할 수 있습니다.

사용자가 클릭하면 전체 텍스트를 표시하려는 경우에도 전체 텍스트가 필요하며 데이터베이스에서 사용자에게 짧은 텍스트와 전체 텍스트를 보내려면 낭비하는 것 같습니다. 따라서 전체 텍스트를 가져 와서 사용자가 클릭 할 때 짧은 텍스트와 전체 텍스트를 표시하는 코드를 작성할 수 있습니다. 당신은 당신이 (대신 alert()의) 그것을 클릭 더 좋은 뭔가를 할 수 당연히

$result = mysql_query('SELECT text FROM table'); 
$row = mysql_fetch_row($result); 
echo '<div onclick="alert(\''.$row[0].'\');">'.substr($row[0], 0, 40).'</div>'; 

. 또한 원문이 40 자보다 짧고 이와 같은 상황을 처리하는지 확인하기 위해 PHP 검사를 할 수 있습니다.

+0

바로! 전체 텍스트를 자주 사용하지 않을 경우 한꺼번에 가져올 이유가 없습니다. – jensgram

+0

아마도 사용자가 대부분의 행에 대한 짧은 텍스트를 원할 뿐이고 몇 줄의 전체 텍스트 만 원하기 때문에 John은 짧은 텍스트를 원하지만. 그 또는 사용자가 다른 정보가있는 새 페이지를 보려면 클릭하십시오. – Cocowalla

3

테이블 이름에서이 ...
SELECT LEFT (필드 이름, 40)을 시도 WHERE 테이블 이름 FROM 조건 처음 40
SELECT RIGHT (필드 이름, 40) WHERE 지난 40

에 대한 조건
0

확인뿐만 아니라이 하나, 사용자가 클릭 할, 그래서 지금 당신은 더 많은 정보를 전송하는 경우

mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename'); 
관련 문제