Apabila sql menggunakan dalam sebagai syarat, parameter digunakan untuk memenuhi syarat pertanyaan, dan menghantar rentetan secara langsung tidak dapat memuaskan syarat itu.
select id,name from user where id in(?)
Gunakan fungsi FIND_IN_SET(str,strlist)
select id,name from user where FIND_IN_SET(id,#{strlist})
str
: Medan keadaan
strlist
: set nilai sepadan
select id,name from user where FIND_IN_SET(id,'111,22,333')
Jika terdapat perkara berikut 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 = 1
T1.limit_user ialah nilai yang ditanya daripada jadual akaun
‘9,8,4’
Hasil pertanyaan yang betul sql pertanyaan hendaklah :
Tidak disyorkan, mempromosikan pelanggan, mempromosikan pelanggan
Hasil sebenar ialah:
Tidak disyorkan
Sebab:
Jika dalam dalam mysql ialah rentetan, ia akan ditukar secara automatik kepada jenis int Kaedah berikut digunakan secara dalaman:
CAST('4,3' AS INT)
Oleh kerana koma adalah Ia telah tersilap ditulis sebagai koma bertitik, dan "4,3" menjadi "4;", jadi hasil daripada pertanyaan SQL di atas hanya mengandungi yang pertama.
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')
sql yang betul
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
Atas ialah kandungan terperinci Apakah kaedah menggunakan rentetan dalam dalam keadaan dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!