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: 条件フィールド
select id,name from user where FIND_IN_SET(id,'111,22,333')mysql クエリの条件パラメータはカンマ付きの文字列です。クエリ結果は間違っています
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 = 1
‘9,8,4’
#推奨されません、顧客を促進します、顧客を促進しますQuery sql 正しいクエリ結果は次のようになります:
実際の結果は次のとおりです:非推奨
理由:
mysql の in が文字列の場合、自動的に int 型に変換されます。内部的には以下のメソッドが使用されます。 : CAST('4,3' AS INT)
カンマを誤ってセミコロンとして記述したため、「4,3」は「4;」となり、上記のクエリ SQL の結果には最初の 1 つだけが含まれます。
解決策
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 中国語 Web サイトの他の関連記事を参照してください。