Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Usuń znaki nieliczbowe z ciągu

Możesz to zrobić w jednym oświadczeniu. Naprawdę nie tworzysz zestawienia z ponad 200 ZAMIANAMI, prawda?!

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)

Działający SQL Fiddle pokazywanie tego zapytania z przykładowymi danymi

Replikowane poniżej dla potomności:

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'

Wyniki

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. Jak utworzyć zapytanie przekazujące w dostępie przy użyciu połączenia bez DSN?

  2. RAISERROR―Jak odróżnić za pomocą SqlException?

  3. Czy mogę użyć strumienia, aby WSTAWIĆ lub UAKTUALNIĆ wiersz w programie SQL Server (C#)?

  4. Wskazówki, jak zmniejszyć złożoność SQL Server

  5. Procedura składowana T-SQL do zwracania sugerowanych wyników wyszukiwania w stylu Google