Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thực hiện regex (thay thế) trong một truy vấn SQL

Yêu cầu một số hack nhưng chúng tôi có thể thực hiện việc này bằng LIKE , PATINDEX , TRÁI QUYỀN và nối chuỗi cũ tốt.

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

Tốt hơn là đây là phiên bản SQL Server bất khả tri và sẽ hoạt động tốt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bản xem trước công khai đầu tiên của SQL Server 2019:CTP 2.0

  2. Đặt lại AutoIncrement trong SQL Server sau khi Xóa

  3. Tôi nên sử dụng cột varchar (max) nội tuyến hay lưu trữ nó trong một bảng riêng?

  4. SQL được tối ưu hóa cho cấu trúc cây

  5. CURRENT_TIMESTAMP Ví dụ trong SQL Server (T-SQL)