Masalah:
Anda ingin membagi string di SQL Server.
Contoh 1:
Anda memiliki sebuah kalimat, dan Anda ingin membaginya dengan karakter spasi.
Solusi 1:
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Hasilnya terlihat seperti ini:
nilai |
---|
Sebuah |
contoh |
kalimat. |
Diskusi:
Fungsi STRING_SPLIT(string, separator) di SQL Server membagi string dalam argumen pertama dengan pemisah di argumen kedua. Untuk membagi kalimat menjadi kata-kata, tentukan kalimat sebagai argumen pertama dari STRING_SPLIT()
fungsi dan ' ' sebagai argumen kedua.
STRING_SPLIT()
menghasilkan kolom bernama nilai. Untuk mendapatkan setiap bagian dari string dalam baris terpisah, pilih nilai dari STRING_SPLIT(string, separator)
. Misalnya,
SELECT value FROM STRING_SPLIT('An example sentence.', ' ');
Tentu saja, Anda dapat memisahkan string menggunakan pemisah lain, misalnya koma. Anda juga dapat mengganti nama kolom seperti kolom lainnya.
Contoh 2:
Dalam texts
tabel, ada beberapa kalimat.
kalimat |
---|
Ini adalah kalimat pertama. |
Dan ini yang lainnya. |
Anda ingin membagi kalimat dengan karakter spasi.
Solusi 2:
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Hasilnya terlihat seperti ini:
nilai |
---|
Ini |
adalah |
yang |
pertama |
kalimat. |
Dan |
ini |
yang |
lainnya |
satu. |
Diskusi:
Sama seperti pada contoh sebelumnya, fungsi STRING_SPLIT(text, separator) membagi string yang diberikan sebagai argumen pertama oleh separator. Kali ini, Anda memiliki beberapa kalimat untuk diurus; kalimat ini disimpan dalam texts
meja. Inilah mengapa Anda perlu menggunakan CROSS APPLY; lebih spesifik,
texts CROSS APPLY STRING_SPLIT(sentence, ' ')
Gunakan di FROM
ayat. Artinya sisi kanan (STRING_SPLIT(sentence, ' ')
) diterapkan ke setiap baris tabel sisi kiri (texts
). Inilah sebabnya mengapa sisi kanan dapat menggunakan kolom dari tabel sisi kiri (di sini, kolom kalimat dari texts
tabel.) Inilah kueri yang Anda dapatkan.
SELECT value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Contoh 3:
Dalam texts
tabel, ada dua kolom:id
dan sentence
.
id | kalimat |
---|---|
1 | Ini adalah kalimat pertama. |
2 | Dan ini yang lainnya. |
Anda ingin membagi kalimat dengan karakter spasi dan juga menunjukkan ID kalimat.
Solusi 3:
SELECT id, value FROM texts CROSS APPLY STRING_SPLIT(sentence, ' ');
Hasilnya terlihat seperti ini:
id | nilai |
---|---|
1 | Ini |
1 | adalah |
1 | yang |
1 | pertama |
1 | kalimat. |
2 | Dan |
2 | ini |
2 | yang |
2 | lainnya |
2 | satu. |
Diskusi:
Contoh ini sangat mirip, tetapi Anda juga ingin melihat id
kolom. Untuk melihat kolom ini, tambahkan saja ke SELECT
list dan ingat untuk menyertakan koma. Anda akan melihat ID kalimat beserta bagian kalimat di hasil. Misalnya, kalimat pertama dipecah menjadi 5 bagian dan memiliki ID 1
. Oleh karena itu, ID untuk semua 5 bagian dalam tabel hasil akan menjadi 1
. Kalimat berikutnya, dengan ID 2
, juga dibagi menjadi 5 bagian, dan masing-masing bagian ini akan ditampilkan dengan id = 2
.