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

Permintaan XML MySQL

Solusi untuk masalah Anda memerlukan penggunaan numbers table:tabel bilangan bulat, 1,2,3,.... hingga beberapa nilai yang masuk akal, katakanlah 1024.

Anda kemudian akan menggunakan String Walking untuk memecahkan masalah.

Berikut adalah pernyataan CREATE TABLE untuk numbers tabel:

CREATE TABLE numbers (
  `n` smallint unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`n`)
)
;
INSERT INTO numbers VALUES (NULL);
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;
INSERT INTO numbers SELECT NULL FROM numbers;

Di atas diisi dengan nilai 1..1024

Dan sekarang pertanyaannya:

SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(ExtractValue(@XML, '/As/A/B'), ' ', n), ' ', -1) AS value
FROM
  numbers
WHERE
  n BETWEEN 1 AND ExtractValue(@XML, 'count(/As/A/B)')
;


+-------+
| value |
+-------+
| Chan  |
| Shey  |
| Bob   |
+-------+
3 rows in set (0.02 sec)

Kami menggunakan ExtractValue(@XML, 'count(/As/A/B)') untuk mendapatkan nilai 3 -- jumlah elemen XML yang cocok.

Menjalankan melalui nomor 1, 2, 3, kami mengekstrak token #1, token #2, token #3 dari teks CHAN SHEY BOB , dipisah dengan spasi.

Catatan:

  • ExtractXML mengembalikan nilai yang dibatasi ruang. Tetapi jika ada spasi di dalam teks yang dikembalikan - jangan pergi. Itu tidak bisa dibedakan dari ruang pembatas.

  • Dimungkinkan untuk menghindari pembuatan tabel angka dan menghasilkan angka dengan cepat . Saya menyarankan untuk tidak -- itu akan membuat banyak overhead. Memiliki tabel nomor baris 1024 selalu menyenangkan untuk dimiliki.

Semoga berhasil!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa membatasi pengguna MySQL ke tabel tertentu?

  2. Kesalahan fatal MySQL:Tidak dapat membuka dan mengunci tabel hak istimewa:Format file 'pengguna' salah

  3. Bisakah kita memiliki nama tabel sebagai opsi di MySQL?

  4. Menyesuaikan Pintasan Keyboard di MySql Workbench

  5. Bagaimana cara menerapkan sistem penandaan yang mirip dengan SO di php/mysql?