Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Memisahkan String di SQL Server

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melewati varchar yang penuh dengan nilai yang dibatasi koma ke fungsi SQL Server IN

  2. Gunakan APP_NAME() untuk Mendapatkan Nama Aplikasi dari Sesi Saat Ini di SQL Server

  3. Buat Fungsi Buatan Pengguna Skalar di SQL Server

  4. SQL Server SMO mengeluhkan DLL yang hilang

  5. Cara Memodifikasi Periode Retensi Change Data Capture (CDC) di SQL Server - Tutorial SQL Server