Sqlserver
 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

По-добре е, че това е независима от версията на SQL Server и трябва да работи добре.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на дати между диапазон от дати

  2. Как да форматирате датата и часа в SQL Server

  3. Грешка при влизане в SQL Server:Неуспешно влизане за потребител 'NT AUTHORITY\SYSTEM'

  4. При каскада за изтриване за таблица за саморефериране

  5. Трябва да предам имена на колони, използвайки променлива в оператора за избор в процедурата на магазин, но не мога да използвам динамична заявка