2012-01-10 3 views
2

나는 쉼표로 구분 된 값이 들어있는 필드가 있습니다.쉼표로 구분 된 값 필드에서 문자열 발생 수를 찾는 방법

내가 'B'의 발생의 수를 찾으려면 :

SELECT FIND_IN_SET('b','a,b,c,d,b,b') 

내가 다른 일을합니다 : 이 코드를 사용하여 나는 "B"의 목록의 존재를 확인할 수 있습니다 발견 쉼표로 구분 된 목록
. MySQL에서도 가능합니까? 아니면 PHP에서 array_count_values으로 요청해야합니까?

답변

0

로 케이트 트릭을해야합니다. 첫 번째 (두 개의 args)는 처음에 호출되어야하고 두 번째 (세 개의 args)를 호출하여 첫 ​​번째 결과를 두 번째 세 번째 인수로 제공하는 두 가지 다른 서명이 있음에 유의하십시오. 더 많은 정보에 :

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

(SUBSTR, STR, POS)를

제 구문 문자열 문자열 SUBSTR 처음 나타나는 위치를 반환 (SUBSTR, STR) 찾은 LOCATE str. 두 번째 구문은 위치 pos에서 시작하는 문자열 str에 substr substr이 처음 나타나는 위치 을 반환합니다. substr가 str에 없으면 0을 반환합니다.

+0

내가 잘못 했나요? 아니면 둘 다 첫 번째 발생 만 찾았습니까? –

+0

이 텍스트 (I red)를 읽음으로써 처음부터 0부터 시작하여 검색하고 첫 번째 검색 결과에서 두 번째를 찾습니다. 하지만 50 번 있으면 어떻게 될까요? 아니면 정말 중요한 것을 놓치고 있습니까? :-) –

+0

은 0을 반환 할 때까지 계속 호출합니다. – Fletch

1

이 블로그 게시물은 당신이 원하는 것을 할 것 같다 :

http://nostylesheets.com/2009/07/17/mysql-substr-count/

기본적으로, 필드의 문자열 길이에 보이는, 다음, 대상 하위 문자열을 제거하는 새로운 길이 보인다 . 하위 문자열의 길이가 4 자이고 새 문자열의 길이가 이제 8 자보다 짧다는 것을 알고 있으면 2 번 발생했습니다.

+0

아직 빨강이 아닙니다. 그러나 결국 필드를 수정할 수 없습니다. –

+0

흥미 롭습니다. 감사합니다. –

+0

물론 가능합니다. 새 값을 삽입하거나 현재 값을 새 값으로 바꾸려면 REPLACE() 함수를 사용하십시오. – KOGI

관련 문제