sql >> Database >  >> RDS >> Sqlserver

Voer regex (vervangen) uit in een SQL-query

Enige hacking vereist, maar we kunnen dit doen met LIKE , PATINDEX , LINKS EN JUIST en de goede oude aaneenschakeling van strings.

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

Beter is dat dit SQL Server-versie-agnostisch is en prima zou moeten werken.



  1. RMAN-opdrachten mislukken met ORA-00904:"BS". "GUID":ongeldige identifier

  2. Hoe PLAFOND() werkt in MariaDB

  3. Conversie mislukt bij het converteren van de varchar-waarde 'simple' naar gegevenstype int

  4. Hoe een kolom toevoegen als deze niet bestaat op PostgreSQL?