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

Memisahkan string yang dibatasi panjang variabel di beberapa baris (SQL)

Pertama, izinkan saya mengatakan bahwa inilah alasan Anda tidak boleh memiliki data yang dipisahkan koma di bidang sejak awal. Tidak ada cara yang mudah atau efisien untuk menggunakannya.

Karena itu, Anda dapat menggunakan kueri rekursif untuk membagi string dan mendapatkan angka darinya:

with split as
(
  select
    item = cast('' as varchar(max)),
    source = cast('20,0, 5,,^24,0, 0,,^26,0, 0,,^281,0, 0,,^34,0, 2,,^48,0, 2,,^44,0, 2,,^20,0, 10,,^20,5, 5,,^379,1, 1,,^26,1, 2,,^32,0, 1,,^71,0, 2,,^' as varchar(max))
  union all
  select
    item = substring(source, 1, charindex(',,', source)),
    source = substring(source, charindex(',,', source) + 2, 10000)
  from split
  where source > ''
)
select substring(item, 1, charindex(',', item) -1)
from split
where item > ''

Hasil:

20
^24
^26
^281
^34
^48
^44
^20
^20
^379
^26
^32
^71



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konversi ekspresi CASE dalam SQL ke kolom turunan di SSIS

  2. Hapus catatan Duplikat dari tampilan

  3. Cara mengubah sisipan berparametri lambat menjadi salinan massal cepat (bahkan dari memori)

  4. Keuntungan SQL Server 2008 dibandingkan SQL Server 2005?

  5. Mengapa menggunakan kunci utama bukan nol di TSQL?