2012-09-07 3 views
0

남자 그냥 빠른 질문. 나는 닮은 MySQL의 행의 문자열이이
PHP는 MySQL 문자열 결과를 검색

'google.co.nz, stackoverflow.com, facebook.com, grubber.co.nz'


등등 ... 나는 테이블의 모든 행을 검색하고 'facebook.com'가 나타나 몇 번이나 확인하고 싶은 위의 것과 같은 모든 행에 너무에 (

내 행이

-- id -- user -- likes 
    1  bob  facebook.com, google.co.nz, grubber.co.nz, stackoverflow.com 

처럼 내가 facebook.com이 전체 테이블에 표시하는 방법을 여러 번 확인하고 싶은 명확히

SELECT COUNT(*) 
FROM table 
WHERE likes REGEXP '[[:<:]]facebook.com[[:>:]]' 

PS를 : 모든 사용자를 가정하면 모든 행)

+10

에서 자세한 내용을 찾을 수 있습니다. – knittl

+0

은 쉼표로 구분 된 값입니까? 나는 당신이'ID','User','Likes' (csv입니까?)와 같은 칼럼을 가지고 있다는 것을 의미합니까? –

+0

@knittl yer 나도 알다시피, 구조는 쓰레기 다. 단지 시험을 위해서이다. – ryanc1256

답변

5

한 번만 같은 페이지처럼,이 작업을해야 할 수있는이 같은 레이아웃으로 심각한 문제로 테이블, 당신은 것이다 실행을 정상화 아주 가까운 장래에!

+0

notfacebook.com에도 일치하지 않습니까? – Quentin

+0

그래, 네 말이 맞아 ... 그 다음엔 ... –

+0

그냥 정규화해라! csv 필드는 거의 항상 나쁜 아이디어입니다 – VDP

0

당신은 패턴과 일치하는 like 연산자를 사용할 수 있습니다

SELECT COUNT(id) AS occurences WHERE likes LIKE "%facebook.com%" 
0

당신은 "LIKE"문을 사용할 수 있습니다. 문자열이으로

같은 테이블 구조가 아닌 N을 : 그것은

SELECT * FROM yourtable 
WHERE likes LIKE '%facebook.com%' 

어쨌든 (당신이 사용자가 facebook.com 좋아하는 알고 싶다면), 1에서 좋아하는 저장 고려하시기 바랍니다 같이 간다 당신은 모든 유능한 사이트, 사용자 테이블 및 할당을 저장하는 사용자가 좋아하는 테이블을 저장하는 테이블을 가지고 있습니다.

0

select count(likes) from yourTable where likes like '%facebook.com%' 
0

다른 옵션을 사용해보십시오. 변수에서 행 데이터를 가져온 다음 preg_match_all (http://www.php.net/manual/es/function.preg-match-all.php) 함수를 사용하십시오.

이 함수는 첫 번째 매개 변수에서 전달 된 일반 표현식의 발생 횟수를 반환합니다.

1

당신은 LIKE SQL 쿼리를 실행, 게으른 방식으로 그것을 할 수 :

SELECT count(*) FROM my_table 
WHERE my_table.likes LIKE '%facebook.com%' 

이 정말 (정말) 친화적 인 CPU되지 않습니다. 특히 큰 테이블의 경우

그렇지 않으면 MySQL 전체 텍스트 인덱스 기능을 사용할 수 있습니다.

당신은 먼저 데이터베이스를 정상화 더 낫다 this article