sql에서 in을 조건으로 사용할 경우 쿼리 조건을 만족시키기 위해 매개변수를 사용하며, 문자열을 직접 전달하면 조건을 만족할 수 없습니다.
select id,name from user where id in(?)
FIND_IN_SET(str,strlist) 함수 사용
select id,name from user where FIND_IN_SET(id,#{strlist})
str
: 조건부 필드str
: 条件字段
strlist
strlist
: 일치 값 집합
select id,name from user where FIND_IN_SET(id,'111,22,333')조건 매개변수의 MySQL 쿼리가 쉼표가 포함된 문자열이면 쿼리 결과가 잘못되었습니다다음 sql이 있는 경우:
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE ur.id IN (T1.limit_user) GROUP BY ur.id ) AS limit_user FROM account T1 WHERE 1 = 1T1.limit_user는 계정 테이블에서 쿼리한 값입니다
‘9,8,4&rsquo ;
SQL 쿼리의 올바른 쿼리 결과는 다음과 같습니다.
권장하지 않음, 고객 홍보, 고객 홍보
실제 결과는 다음과 같습니다.
권장하지 않음
이유:
에 있는 경우 mysql이 문자열이면 자동으로 int형으로 변환된다. 내부적으로는 다음과 같은 방법을 사용한다.CAST('4,3' AS INT)
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')🎜올바른 sql🎜
SELECT ( SELECT GROUP_CONCAT(content) FROM account_limit_user ur WHERE FIND_IN_SET(ur.id, T1.limit_user) > 0 ) AS limit_user, T1.limit_user limit_userid FROM account T1 WHERE 1 = 1
위 내용은 mysql에서 조건에 문자열을 사용하는 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!