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

MySQL Split Comma Dipisahkan String Ke Tabel Temp

Ini pertanyaan yang hampir sama dengan Dapatkah Mysql Membagi kolom?

MySQL tidak memiliki fungsi string split sehingga Anda harus melakukan pekerjaan di sekitar. Anda dapat melakukan apa saja dengan data setelah Anda membaginya menggunakan salah satu metode yang tercantum pada halaman jawaban di atas.

Anda dapat mengulang fungsi kustom itu dan istirahat ketika kembali kosong, Anda harus bermain dan mempelajari beberapa sintaks (atau setidaknya saya akan melakukannya) tetapi sintaks untuk loop FOR di mysql ada di sini:http://www.roseindia.net/sql/mysql-example/for.shtml

Anda dapat mengulanginya, menambah posisi dalam fungsi di bawah ini:

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

(Kredit:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )

Yang seharusnya mengembalikan '' jika tidak ada kecocokan yang ditemukan, jadi putuskan loop jika tidak ada kecocokan yang ditemukan. Ini akan memungkinkan Anda untuk dengan hanya mengurai mysql di atas string terpisah dan menjalankan kueri penyisipan ke dalam tabel temp. Tapi kenapa tidak menggunakan bahasa scripting seperti php saja untuk pekerjaan seperti itu? :(

Kode untuk sintaks loop:

DELIMITER $$  

CREATE PROCEDURE ABC(fullstr)

   BEGIN
      DECLARE a INT Default 0 ;
      DECLARE str VARCHAR(255);
      simple_loop: LOOP
         SET a=a+1;
         SET str=SPLIT_STR(fullstr,"|",a);
         IF str='' THEN
            LEAVE simple_loop;
         END IF;
         #Do Inserts into temp table here with str going into the row
         insert into my_temp_table values (str);
   END LOOP simple_loop;
END $$


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan jarak antara dua titik menggunakan garis lintang dan garis bujur di mysql

  2. Neo4j - Impor Data dari File CSV menggunakan Cypher

  3. Cara menggunakan beberapa database secara dinamis untuk satu model di CakePHP

  4. MySQL, Dapatkan peringkat pengguna

  5. Menggunakan ScrollableResults Hibernate untuk membaca 90 juta catatan secara perlahan