sql >> データベース >  >> RDS >> Sqlserver

文字列から数字以外の文字を取り除く

    これは、1 つのステートメントで実行できます。本当に 200 以上の REPLACE でステートメントを作成しているわけではありませんよね?!

    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)
    

    SQL Fiddle の作業 このクエリをサンプル データとともに表示する

    後世のために以下に複製:

    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'
    

    結果

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


    1. MySql-重複キー挿入時

    2. 前の行mysqlを選択しますか?

    3. SQLServerテーブルを更新するためのMySQLトリガー

    4. mysqlからpostgresにアクセスする方法は?