sql >> Databasteknik >  >> RDS >> Sqlserver

Utför regex (ersätt) i en SQL-fråga

En del hackning krävs men vi kan göra detta med GILLA , PATINDEX , VÄNSTER OCH HÖGER och gamla goda strängsammansättningar.

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

Bättre är att det här är SQL Server-version agnostisk och borde fungera bra.



  1. Beräkna decil från frekvens i MySQL

  2. postgresql - antal (inga nollvärden) för varje kolumn i en tabell

  3. Jämföra datalager för PostgreSQL - MVCC vs InnoDB

  4. Varför du bör begränsa användaråtkomst för din databas