문제

숫자 문자열 (예 : '1,2,3,4,5')이 포함 된 MySQL 테이블을 쿼리하려고합니다.

'9,10' '9%'라면 '11'을 염두에두고 '1'이 있지만 '11'을 염두에 두지 않는지 검색하려면 어떻게해야합니까?

결정된!

(field like '10' OR field like '%,10,%' OR field like '%,10' OR field like '10,%') 
도움이 되었습니까?

해결책

기능이 필요합니다 find_in_set. BTW, '9%'가 작동해야합니다. 열에 지정한 값이 포함되어 있으면 쿼리가 확실합니까?

SELECT * FROM table WHERE field LIKE '9%'?

다른 팁

find_in_set 함수를 시도 할 수 있습니다

select find_in_set('1','1,2,3,11,12')

표준 SQL도 할 수 있습니다.

...
WHERE 
  ',' + SetValue + ',' LIKE '%,1,%' 
  AND ',' + SetValue + ',' NOT LIKE '%,11,%' 

이 표현식은 인덱스를 사용할 수 없으므로 테이블 크기가 상승함에 따라 성능이 빠르게 저하됩니다.

더 나은 성능을 위해 테이블을 올바르게 정규화해야합니다.

SetId  SetValue
    1  1
    1  2
    1  3
    1  4
    1  5

대신에

SetId  SetValue
    1  '1,2,3,4,5'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top