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

SQLクエリで正規表現(置換)を実行する

    いくつかのハッキングが必要ですが、 LIKEでこれを行うことができます 、 PATINDEX そして正しい 古き良き文字列の連結。

    create table test
    (
        id int identity(1, 1) not null,
        val varchar(25) not null
    )
    
    insert into test values ('&lt; <- ok, &lt <- nok')
    
    while 1 = 1
    begin
        update test
            set val = left(val, patindex('%&lt[^;]%', val) - 1) +
                          '&lt;' +
                          right(val, len(val) - patindex('%&lt[^;]%', val) - 2)
        from test
        where val like '%&lt[^;]%'
    
        IF @@ROWCOUNT = 0 BREAK
    end
    
    select * from test
    

    これはSQLServerのバージョンに依存せず、正常に機能するはずです。



    1. SQLException:文字列またはバイナリデータは切り捨てられます

    2. Oracle:Oracle SQLで16進数を10進数に変換するにはどうすればよいですか?

    3. STRING_ESCAPE()関数がSQL Server(T-SQL)でどのように機能するか

    4. Oracle:数値のみの行を返すSQLクエリ