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

Pisahkan Data di SQL Server String

Fungsi ini akan membantu Anda untuk memisahkan string:

CREATE function dbo.split(@value varchar(8000),@delim varchar(8000))
returns table
as
return
(
select d.value,
       d.orders,
       ivalue = convert(int, case when isnumeric(d.value)=1 and d.value not like '%[^0-9 +-]%' and len(replace(replace(replace(d.value,' ',''),'-',''),'+',''))<=10 then case when convert(bigint,d.value) between -2147483648 and 2147483647 then d.value end end)

    from
        (
            select   
                    value= replace(substring(value,
                                            idx,
                                            case when cnt>=0 then cnt end /* case для защиты от нехороших планов, когда сначала идет вычисление substring, а потом ограничивающее where по s_value.number between */
                                         )
                                 ,char(1),'')
                    ,orders=( datalength(left(value,idx-1))-datalength(replace(left(value,idx-1),@delim,''))
                            )/datalength(@delim)
                from (
                       select number
                             ,idx
                             ,cnt = charindex(@delim,value, number + 1) - number - datalength(@delim)
                             ,value 
                          from 
                                (
                                   select number
                                         ,idx = number + datalength(@delim)
                                         ,value = (select @delim+char(1)[email protected]+char(1)[email protected])
                                      from dbo.s_value
                                        where number between 1 and datalength( (select @delim+char(1)[email protected]+char(1)[email protected]) ) - datalength(@delim)

                                ) t            
                          where substring(t.value, number, datalength(@delim)) = @delim         
                     ) t             
       ) d          
)


GO



  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 cara menanyakan output ini di SQL server

  2. 4 Alasan Mengapa Anda Harus Memprioritaskan Pemantauan Database dalam Perencanaan 2020

  3. Bagaimana cara meneruskan Parameter Bernilai Tabel (Parameter seperti Array) ke Prosedur Tersimpan di Microsoft SQL Server 2008 R2 menggunakan JDBC?

  4. Kesalahan :Jenis kolom DOB bertentangan dengan jenis kolom lain yang ditentukan dalam daftar UNPIVOT

  5. Perbarui semua nilai SQL NULL di beberapa kolom menggunakan klausa WHERE level kolom?