2014-01-29 1 views
0

정수 배열을 보유하는 varchar 필드가 있습니다. 예를 들어정수 배열에 대한 기본 mysql regexp

:

내가 선택한 ID의 인스턴스가 모든 행을 얻을 수 있어야합니다
Row1: [2] 
Row2: [1,8,346] 
Row3: [10,54,245] 
Row4: [4,25,3,7,46,14] 

. 나는 IN 함수의 반대를 사용할 수 있다면 좀 ... 좋아

SELECT * FROM table WHERE field IN (4) 

비록 IN 기능의 입력을 반전/출력 ...

시도하고 명확히하려면 : 를 위의 번호를 사용하여 행으로 설정합니다. ID가 1 인 모든 행을 varchar 그룹의 숫자로 가져올 수 있어야합니다. 내가 ID 1에 대한 쿼리를 수행 할 때

SELECT * FROM table WHERE field REGEXP '(1)'; 

, 결과 집합은 행 2,하지 (세트에 10)

제안을 3 행이 있어야합니다 같은 내가하려고했던 어떤 모습? TIA

+0

ID 4가 주어지면 varchar 필드가 4 인 모든 행이 필요합니까? 또는 varchar 필드 ('[1,10]')를 사용하면 ID가 1 또는 10 인 모든 행을 원하게됩니까? 어느 것? 당신의 예제에서 원하는 출력은 무엇입니까 "SELECT * FROM table WHERE field IN (4)"? –

+0

ID가 1 인 경우 10을 포함하는 행 (1은 아님)을 선택하지 않아야합니다. 질문에 정확하게 대답하고 있습니까? – user2977468

+0

@ user2977468 그것이 내가 혼동스럽게 그것을 썼다는 것을 알았지 만, 그것은 내가 의미했던 것이 아닙니다. 그러나 당신의 업데이트 된 질문 덕분에 지금 당신이 의미하는 바를 이해합니다. –

답변

1

나는 당신이 '21'에서 1 또는 '10'에서 1 일치하지 않습니다 의미

SELECT * FROM table WHERE field REGEXP '[[:<:]]1[[:>:]]'; 

[[:<:]][[:>:]] 일치하는 단어 경계 뭔가를 시도 할 수 있다고 생각합니다, 하지만 [[:<:]][[:>:]]을 설명 MySQL의 문서에서 this page의 맨 아래를 참조하십시오 전체 단어 1.

일치합니다.