2013-06-06 3 views
1

바보처럼 들릴지 모르지만 단지 호기심이들 수도 있습니다.mysql - 열을 지정하지 않고 결과를 필터링하는 방법

이 나는 ​​테이블 posts라는 이름의 한 :

 
+----------+------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+----------+------------------+------+-----+---------+----------------+ 
| id  | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| title | varchar(50)  | YES |  | NULL |    | 
| body  | text    | YES |  | NULL |    | 
| created | datetime   | YES |  | NULL |    | 
| modified | datetime   | YES |  | NULL |    | 
+----------+------------------+------+-----+---------+----------------+ 

값을 :

 
+----+-----------------------+----------------------------------------+---------------------+---------------------+ 
| id | title     | body         | created    | modified   | 
+----+-----------------------+----------------------------------------+---------------------+---------------------+ 
| 2 | A title once again!!! | And the post body follows. Tralalalala | 2013-06-03 13:13:44 | 2013-06-05 09:36:51 | 
| 3 | Title strikes back | This is really exciting! Not.   | 2013-06-03 13:13:46 | NULL    | 
| 11 | Tomcat    | Tommy boy!!! FFF      | 2013-06-04 16:33:22 | 2013-06-04 16:48:40 | 
| 12 | FFD     | dsfdsf         | 2013-06-04 16:48:56 | 2013-06-04 16:55:50 | 
| 13 | fdf     | dfdsf         | 2013-06-04 16:57:47 | 2013-06-05 09:36:54 | 
| 14 | GGD     | dsfdsf         | 2013-06-04 17:02:33 | 2013-06-04 17:02:33 | 
| 15 | GG#     | dsfdsfff322       | 2013-06-05 09:36:20 | 2013-06-05 09:36:28 | 
+----+-----------------------+----------------------------------------+---------------------+---------------------+ 

의 내가 필드의 값에 상관없이 Th (대소 문자를 구별하지)가 행에 대해 검색 할 가정 해 봅시다 . 이것은 빠른 검색 기능을 만드는 것과 같습니다. 분명히 그들은거야 그 값을 허용하지 않기 때문에 내가 다른 필드를 포함하지 않았다 SELECT * FROM posts WHERE title LIKE '%Th%' OR body LIKE '%Th%'

:

일반적으로 내가 좋아하는 일을 할 것입니다.

이 바로 가기가 있는지 알고 싶습니다. SELECT * FROM posts LIKE '%Th%'처럼.

알려 주시기 바랍니다. 감사.

+0

게시물 SELECT * FROM와 문제가 무엇인지 WHERE 제목 LIKE '% Th %'OR body '% Th %' – PSR

+0

@PSR 10 개 이상의 열이 있다면 정말 귀찮은 것이 아니라 상상해보십시오. 나는 지름길이 있는지를 알고 싶다. 그러면 큰 도움이 될 것이다. – NinjaBoy

답변

2

일반 SQL을 사용하면 포함 할 모든 열 이름을 지정해야합니다.

검색 상자와 비슷한 동작이 필요하면 MySQL의 전체 텍스트 기능을 살펴 보시기 바랍니다. 참조 :

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

+0

제안 해 주셔서 감사합니다. Im 전체 텍스트 검색에 대해 자세히 알고 싶습니다. 고급 고급 쿼리에 사용할 수 있습니다. – NinjaBoy

0

아니요 where 절을 사용하기위한 바로 가기가 없습니다. 열 지정 그렇지 않으면 쿼리 엔진은 where 절에 지정하지 않으면 필터링 할 대상과 필터링 할 열을 결코 알 수 없습니다.

사용자 지정 바로 가기를 원할 경우 단일 매개 변수 (검색 문자열)를 사용하고 필수 필드를 반환하는 함수를 작성할 수 있습니다.

0

나는 두렵다.

유스 케이스가 무엇인지 잘 모르는 경우 ...이 대체 방법이 유스 케이스에서 작동합니까? 그것은, 데이터베이스에 연결하고 지정된 쿼리를 실행

mysql -u{user} -p{password} -h{hostname} {database_name} -B -e "{query}" | grep "{search_string}"

새로운 라인에서 쿼리 결과, 탭 정지로 구분 된 필드를 반환합니다. 그런 다음 유닉스 유틸리티 grep을 사용하여 리턴 된 행을 필터링하십시오.

+1

나는 눈을 뜨게 해줘서 고마워. 메신저 -u {사용자} -p {암호} -h {호스트 이름} {데이터베이스 이름} 사용하여 원격 서버에 연결할 수 있지만 나머지 명령 사용하여 familliar. – NinjaBoy

2

SQL 언어가 알려지는 스키마하는 것으로 가정한다. 따라서 "모든 열 검색"유형의 기능은 없습니다. 텍스트가 아닌 열에 대해서는 어떻게 작동합니까? 다른 데이터 정렬의 열은 어떻습니까? 기능이없는 언어를 제외하고는 열을 지정하면 다음 개발자에게 사용자의 의도가 표현되고 무엇보다도 우선 고려해야 할 사항이 있습니다.

1

다른 답변으로 모든 열을 지정해야한다는 내용이 있습니다.당신이 정확히 일치하는 항목을 찾으려는 경우

SELECT * 
FROM posts 
WHERE concat(title, ' ', body) LIKE '%Th%' 

은, 당신은 할 수 있습니다 : 여기에 조금 짧은 대안 배합이다

select * 
from posts 
where 'Th' in (title, body) 
+0

LIKE를 사용하는 것은 어떻습니까? 내가 선택한 * 게시물에서 어디에서 '제목'(제목, 본문)하지만 정확한 값을 필요로 보인다 – NinjaBoy

관련 문제