Bagaimana Membahagi Rentetan dengan Cek Terhad dalam Pelayan SQL?



Cuba Instrumen Kami Untuk Menghapuskan Masalah

Dalam artikel ini, kita akan membincangkan beberapa cara untuk memisahkan nilai rentetan yang dibatasi. Ia dapat dicapai dengan menggunakan pelbagai kaedah termasuk.



  • Penggunaan fungsi STRING_SPLIT untuk memisahkan rentetan
  • Buat fungsi nilai meja yang ditentukan pengguna untuk memisahkan rentetan,
  • Gunakan XQuery untuk memisahkan nilai rentetan dan mengubah rentetan yang dipisahkan menjadi XML

Pertama sekali, kita perlu membuat jadual dan memasukkan data ke dalamnya yang akan digunakan dalam ketiga-tiga kaedah. Jadual harus mengandungi satu baris dengan id medan dan rentetan dengan watak pembatas di dalamnya. Buat jadual bernama 'pelajar' menggunakan kod berikut.



BUAT JADUAL pelajar (ID INT IDENTITY (1, 1), student_name VARCHAR (MAX))

Masukkan nama pelajar yang dipisahkan dengan koma dalam satu baris dengan melaksanakan kod berikut.



INSERT INTO student (student_name) NILAI ('Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad')

Pembuatan jadual dan penyisipan data

Sahkan sama ada data telah dimasukkan ke dalam jadual atau tidak menggunakan kod berikut.

pilih * daripada pelajar

Sahkan sama ada data telah dimasukkan ke dalam jadual 'pelajar'



Kaedah 1: Gunakan fungsi STRING_SPLIT untuk memisahkan rentetan

Dalam SQL Server 2016, 'STRING_SPLIT' fungsi diperkenalkan yang boleh digunakan dengan tahap keserasian 130 ke atas. Sekiranya anda menggunakan versi SQL Server 2016 atau lebih tinggi, anda boleh menggunakan fungsi bawaan ini.

Selanjutnya 'STRING_SPLIT' memasukkan rentetan yang mempunyai sub-rentetan yang dibatasi dan memasukkan satu watak untuk digunakan sebagai pembatas atau pemisah. Fungsi mengeluarkan jadual satu lajur yang barisnya mengandungi sub-rentetan. Nama lajur keluaran adalah “ Nilai ” . Fungsi ini mendapat dua parameter. Parameter pertama adalah rentetan dan yang kedua adalah watak pembatas atau pemisah berdasarkan di mana kita harus memisahkan rentetan. Keluaran mengandungi jadual lajur tunggal di mana substring hadir. Lajur keluaran ini dinamakan 'Nilai' seperti yang dapat kita lihat pada gambar di bawah. Lebih-lebih lagi, yang 'STRING SPLIT' fungsi table_valued mengembalikan jadual kosong jika rentetan input adalah NULL.

Tahap keserasian pangkalan data:

Masing-masingpangkalan dataadalahbersambungdengankekeserasiantahap.Iamembolehkanyangpangkalan datatingkah lakukemenjadiserasidengan ikaadalahkhasSQLPelayanversiiaberjalanpada.

Sekarang kita akan memanggil fungsi 'string_split' untuk membelah rentetan yang dibatasi oleh koma. Tetapi tahap keserasiannya kurang dari 130 oleh itu berikutan kesalahan telah ditimbulkan. 'Nama objek tidak sah 'SPLIT_STRING''

Kesalahan timbul jika tahap keserasian pangkalan data lebih rendah daripada 130 'Nama objek split_string tidak sah'

Oleh itu, kita perlu menetapkan tahap keserasian pangkalan data ke 130 atau lebih tinggi. Oleh itu, kami akan mengikuti langkah ini untuk menetapkan tahap keserasian pangkalan data.

  • Pertama sekali tetapkan pangkalan data ke 'single_user_access_mode' dengan menggunakan kod berikut.
SET ALAT DATABASE SINGLE_USER
  • Kedua, ubah tahap keserasian pangkalan data dengan menggunakan kod berikut.
ALTER DATABASE SET SESUAIKAN_LEVEL = 130
  • Letakkan pangkalan data kembali ke mod akses pelbagai pengguna dengan menggunakan kod berikut.
SET ALAT DATABASE MULTI_USER
GUNAKAN [master] GO ALTER DATABASE [bridge_centrality] SET SINGLE_USER ALTER DATABASE [bridge_centrality] SET KOMPATIBILITI_LEVEL = 130 ALTER DATABASE [bridge_centrality] SET MULTI_USER GO

Hasilnya adalah:

Tukar tahap keserasian kepada 130

Sekarang jalankan kod ini untuk mendapatkan hasil yang diperlukan.

TAHNIAH @string_value VARCHAR (MAX); SET @ string_value = 'Monroy, Montanez, Marolahakis, Negley, Albright, Garofolo, Pereira, Johnson, Wagner, Conrad' PILIH * DARI STRING_SPLIT (@string_value,