Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan satu item dari string daftar di MySQL

Tidak ada fungsi asli untuk ini. Anda dapat menggunakan dua fungsi SUBSTRING_INDEX. Dan Anda perlu memeriksa apakah item indeks tertentu itu ada:

SET @string:='1,2,3,4,5';
SET @delimiter:=',';
SET @n:=6;

SELECT
  CASE WHEN
    CHAR_LENGTH(@string)-CHAR_LENGTH(REPLACE(@string, @delimiter, ''))>=
    @n*CHAR_LENGTH(@delimiter)-1
  THEN
    SUBSTRING_INDEX(SUBSTRING_INDEX(@string, @delimiter, @n), @delimiter, -1)
  END;
  • SUBSTRING_INDEX(@string, @delimiter, @n) mengembalikan substring dari string @string sebelum @n kemunculan @delimiter .
  • SUBSTRING_INDEX( ... , @delimiter, -1) mengembalikan semuanya ke kanan pembatas akhir
  • Anda perlu memeriksa apakah pembatas @n ada. Kita dapat mengurangi panjang string dengan pembatas, dan string dengan pembatas dihilangkan - menggunakan REPLACE(@string, @delimiter, '') - dan lihat apakah lebih besar dari @n*CHAR_LENGTH(@delimiter)-1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan SQL untuk memilih catatan duplikat yang muncul lebih dari 2 kali

  2. Saya tidak dapat menggunakan fungsi mysql_* setelah memutakhirkan PHP

  3. mengunggah beberapa file gambar ke galeri php mysql

  4. Bagaimana cara mengurutkan hasil berdasarkan stempel waktu kecuali salah satunya?

  5. Laravel - Penyisipan massal pada kunci duplikat memperbarui kumpulan data besar