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

Hapus karakter non-numerik dari string

Anda dapat melakukan ini dalam satu pernyataan. Anda tidak benar-benar membuat pernyataan dengan 200+ REPLACE bukan?!

update tbl
set S = U.clean
from tbl
cross apply
(
    select Substring(tbl.S,v.number,1)
    -- this table will cater for strings up to length 2047
    from master..spt_values v
    where v.type='P' and v.number between 1 and len(tbl.S)
    and Substring(tbl.S,v.number,1) like '[0-9]'
    order by v.number
    for xml path ('')
) U(clean)

Bekerja SQL Fiddle menampilkan kueri ini dengan data sampel

Direplikasi di bawah ini untuk anak cucu:

create table tbl (ID int identity, S varchar(500))
insert tbl select 'asdlfj;390312hr9fasd9uhf012  3or h239ur ' + char(13) + 'asdfasf'
insert tbl select '123'
insert tbl select ''
insert tbl select null
insert tbl select '123 a 124'

Hasil

ID  S
1   390312990123239
2   123
3   (null)
4   (null)
5   123124


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui SQL dengan penomoran berurutan

  2. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -3 Manual Fail Over Steps

  3. Kueri Pivot Dinamis tanpa menyimpan kueri sebagai String

  4. Optimalkan Pencarian Teks Lengkap di Beberapa Tabel

  5. Dapatkah saya menggunakan ADFS 2.0 untuk mengautentikasi pengguna tertentu terhadap SQL Server?