집 >데이터 베이스 >MySQL 튜토리얼 >MySQL FIND_IN_SET() 대 IN(): IN()이 쉼표로 구분된 ID와 첫 번째 일치 항목만 반환하는 이유는 무엇입니까?
FIND_IN_SET()과 IN(): MySQL의 차이점 이해
질문:
MySQL에는 "주문"과 "회사"라는 두 개의 테이블이 있습니다. "orders"의 "attachedCompanyIDs" 열은 "company"의 행을 참조하는 쉼표로 구분된 ID 목록을 저장합니다. FIND_IN_SET()을 사용하여 주문과 관련된 회사 이름을 쿼리하면 예상한 결과를 얻습니다. 그러나 IN()을 대신 사용하면 첫 번째로 일치하는 회사만 반환됩니다. 왜 이런 일이 발생합니까?
답변:
attachedCompanyIDs 열은 VARCHAR 유형의 스칼라 값입니다. IN()을 사용할 때 MySQL은 문자열을 정수로 변환하고 숫자가 아닌 첫 번째 문자(예: 쉼표)에서 문자열을 자릅니다. 즉, attachmentCompanyID에 여러 값이 포함된 경우 첫 번째 값만 IN 비교에 고려됩니다.
解决方法:
특정 시나리오에 따라 다음이 있습니다. 이 문제에 대한 몇 가지 해결 방법:
추가 고려 사항:
위 내용은 MySQL FIND_IN_SET() 대 IN(): IN()이 쉼표로 구분된 ID와 첫 번째 일치 항목만 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!