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

Apakah kaedah menggunakan rentetan dalam dalam keadaan dalam mysql

王林
Lepaskan: 2023-05-31 10:17:03
ke hadapan
1824 orang telah melayarinya

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(?)
Salin selepas log masuk

Kaedah

Gunakan fungsi FIND_IN_SET(str,strlist)

select id,name from user where FIND_IN_SET(id,#{strlist})
Salin selepas log masuk
  • str: Medan keadaan

  • strlist: set nilai sepadan

select id,name from user where FIND_IN_SET(id,'111,22,333')
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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')')
Salin selepas log masuk

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
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan