Rumah  >  Artikel  >  pangkalan data  >  Apakah kaedah menggunakan rentetan dalam dalam keadaan dalam mysql

Apakah kaedah menggunakan rentetan dalam dalam keadaan dalam mysql

王林
王林ke hadapan
2023-05-31 10:17:031791semak imbas

Keadaan dalam dalam mysql menggunakan rentetan

Senario

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(?)

Kaedah

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')

pertanyaan mysql dalam parameter keadaan ialah rentetan dengan koma, hasil pertanyaan adalah salah

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.

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam